>=DateAdd("ww",-9,Date()-Weekday(Date(),0)+1))
我在一些我继承的SQL编码中有上述功能,并且正在努力弄清楚它实际上在计算什么,任何人都可以帮忙吗?
答案 0 :(得分:1)
将此SQL与解构为部分的语句一起考虑 它在sql-server 12中进行了测试,并使用GETDATE()而不是Date()函数。
select
GETDATE() as today,
@@DATEFIRST as first_day_of_the_week_number,
DATEPART(WEEKDAY,GETDATE()) as current_day_number_of_the_week,
GETDATE()-DATEPART(WEEKDAY,GETDATE()) as previous_saturday,
GETDATE()-DATEPART(WEEKDAY,GETDATE())+1 as previous_sunday,
DATEADD("ww",-9,GETDATE()-DATEPART(WEEKDAY,GETDATE())+1) as previous_sunday_9_weeks_back;
所以这会让9个星期的星期日回来。
请注意,它假设@@DATEFIRST
等于7
如果@@DATEFIRST
等于1,那么它将返回9周的星期一。