>=DateAdd("ww",-9,Date()-Weekday(Date(),0)+1))
我有一些SQL編碼中的上述功能,我已經繼承,並正在努力解決它實際上計算任何人都可以幫助?SQL日期 - 函數
>=DateAdd("ww",-9,Date()-Weekday(Date(),0)+1))
我有一些SQL編碼中的上述功能,我已經繼承,並正在努力解決它實際上計算任何人都可以幫助?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周的星期一回來。
這實際上完全取決於['@@ DATEFIRST'](https://msdn.microsoft.com/library/ms187766)的價值。 (但是'WeekDay'函數同樣含糊不清,有'0'的第二個參數。) –
@Jeroen不知道那個t-sql quirck。感謝您的洞察力。 – LukStorms
SQL Server 2008 –
它看起來更像是一個MS Excel或Access函數。 – gofr1
我以爲這是DAX,但它不是,因爲DAX沒有'DATEADD'功能。但是T-SQL沒有'WEEKDAY'函數,所以這可能只是簡單的VBA。爲您找到此代碼的位置添加上下文。 –