在 Teradata 中计算前一周的数据
Calculate previous week data in Teradata
如何计算前 7 天的数据(前一周的周日至周六)。在一周中的任何一天 运行 它应该总是给出前一周的星期日到星期六。
谢谢
您的 Teradata 版本是多少?
TD14支持NEXT_DAY
,即returns第一个"weekday"晚于指定日期:
SELECT NEXT_DAY(CURRENT_DATE, 'sun'), -- next sunday
NEXT_DAY(CURRENT_DATE, 'sun')-14, -- previous week's sunday
NEXT_DAY(CURRENT_DATE, 'sun')-8 -- previous week's saturday
编辑:
在 TD13 中,您可以减去星期几以获得前一周的结束日期,例如(CURRENT_DATE - DATE '0001-01-01') MOD 7 + 1
returns 1 到 7 表示星期一到星期日,基于已知的星期一 '0001-01-01'。
根据您的需要进行修改(星期从星期日开始)这导致:
SELECT
CURRENT_DATE - ((CURRENT_DATE - DATE '0001-01-07') MOD 7 + 7), -- previous week's Sunday
CURRENT_DATE - ((CURRENT_DATE - DATE '0001-01-07') MOD 7 + 1) -- previous week's Saturday
日历的另一个很好的用途table:
select calendar_date
from
sys_calendar.calendar
where
week_of_calendar =
(select week_of_calendar from sys_calendar.calendar where calendar_date = current_Date) -1
如何计算前 7 天的数据(前一周的周日至周六)。在一周中的任何一天 运行 它应该总是给出前一周的星期日到星期六。 谢谢
您的 Teradata 版本是多少?
TD14支持NEXT_DAY
,即returns第一个"weekday"晚于指定日期:
SELECT NEXT_DAY(CURRENT_DATE, 'sun'), -- next sunday
NEXT_DAY(CURRENT_DATE, 'sun')-14, -- previous week's sunday
NEXT_DAY(CURRENT_DATE, 'sun')-8 -- previous week's saturday
编辑:
在 TD13 中,您可以减去星期几以获得前一周的结束日期,例如(CURRENT_DATE - DATE '0001-01-01') MOD 7 + 1
returns 1 到 7 表示星期一到星期日,基于已知的星期一 '0001-01-01'。
根据您的需要进行修改(星期从星期日开始)这导致:
SELECT
CURRENT_DATE - ((CURRENT_DATE - DATE '0001-01-07') MOD 7 + 7), -- previous week's Sunday
CURRENT_DATE - ((CURRENT_DATE - DATE '0001-01-07') MOD 7 + 1) -- previous week's Saturday
日历的另一个很好的用途table:
select calendar_date
from
sys_calendar.calendar
where
week_of_calendar =
(select week_of_calendar from sys_calendar.calendar where calendar_date = current_Date) -1