SQL日期 - 函数

时间:2016-06-01 09:50:11

标签: sql-server tsql date weekday datepart

   >=DateAdd("ww",-9,Date()-Weekday(Date(),0)+1))

我在一些我继承的SQL编码中有上述功能,并且正在努力弄清楚它实际上在计算什么,任何人都可以帮忙吗?

1 个答案:

答案 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周的星期一。