You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Teradata中获取上周最后一天(周日为周结束日)

Teradata SQL 获取上周最后一天(周日为周末)的实现方式

需求说明

需要在Teradata SQL中实现:以周日作为一周的最后一天,获取上周的最后一天,具体示例如下:

  • 当前日期为2023-01-27(周五),返回2023-01-22(上周日)
  • 当前日期为2023-01-02(周一),返回2023-01-01(上周日)
  • 当前日期为2023-01-18(周三),返回2023-01-15(上周日)

在Hive中对应的实现语句为:

date_sub(current_date, cast(date_format(current_date, 'u') as int));

之前尝试的Teradata语句存在问题:SELECT ROUND(current_date, 'd') (FORMAT 'yyyy-mm-dd');会返回最近的周日,而非上周的最后一天,不符合需求。

正确的Teradata等效语句

利用Teradata的DAYOFWEEK_ISO函数(返回1=周一,7=周日,与Hive中date_format(..., 'u')逻辑完全一致),可以写出等效语句:

SELECT CURRENT_DATE - DAYOFWEEK_ISO(CURRENT_DATE) (FORMAT 'yyyy-mm-dd');

验证示例

  • 当当前日期为2023-01-27(周五):DAYOFWEEK_ISO返回5,2023-01-27 -5 = 2023-01-22,符合要求
  • 当当前日期为2023-01-02(周一):DAYOFWEEK_ISO返回1,2023-01-02 -1 = 2023-01-01,符合要求
  • 当当前日期为2023-01-18(周三):DAYOFWEEK_ISO返回3,2023-01-18 -3 = 2023-01-15,符合要求

内容的提问来源于stack exchange,提问作者userabc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 17:01:25