在Teradata中计算前一周的数据

在Teradata中计算前一周的数据,teradata,weekday,Teradata,Weekday,如何计算前7天的数据(前一周的星期日和星期六)。无论在一周的哪一天运行,它都应该给出前一周的星期日和星期六。 谢谢您的Teradata版本是什么 TD14支持NEXT_DAY,它返回比指定日期晚的第一个“工作日”: SELECT NEXT_DAY(CURRENT_DATE, 'sun'), -- next sunday NEXT_DAY(CURRENT_DATE, 'sun')-14, -- previous week's sunday NEXT_DAY(CUR

如何计算前7天的数据(前一周的星期日和星期六)。无论在一周的哪一天运行,它都应该给出前一周的星期日和星期六。
谢谢

您的Teradata版本是什么

TD14支持
NEXT_DAY
,它返回比指定日期晚的第一个“工作日”:

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中,您可以减去一周中的某一天以获得前一周的结束日期,例如,
(当前日期-日期'0001-01-01')MOD 7+1
根据已知的周一'0001-01-01'返回周一到周日的1到7

根据您的需要进行修改(本周从周日开始),结果如下:

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

日历表的另一个很好的用途是:

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,而不是8。或者,可能是因为我有时无法阅读,没有意识到你在周日传递参数。@user3438498:TD13是一个古老的版本:-)我也为13添加了一个解决方案。