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

私が継承したいくつかのSQLコーディングに上記の関数があり、実際に計算しているものを理解するのに苦労しています。誰か助けてもらえますか?

4

1 に答える 1

1

部分に分解されたステートメントを使用して、この SQL を検討してください。
これは sql-server 12 でテストされ、Date() 関数の代わりに GETDATE() を使用します。

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 に等しいと仮定していることに注意してください。 が 1 の
場合@@DATEFIRST、9 週間前の月曜日が返されます。

于 2016-06-01T10:22:29.853 に答える