3
我想計算兩個日期之間周的差異,如果兩個日期的前一個星期日相同,則兩個日期被視爲同一周的一部分。理想情況下,我想用DATEDIFF
這樣做,而不是學習一個精心製作的習慣用法來計算價值。但是當涉及到數週時,我無法分辨它是如何工作的。DATEDIFF如何計算SQL Server 2005中的星期差異?
以下查詢返回1和2.如果您的日曆周以星期日開始,即預先運行SET DATEFIRST 7
或默認爲@@DATEFIRST
爲7,則這可能有意義。
SET DATEFIRST 7;
-- SET DATEFIRST 1;
DECLARE
@d1 DATETIME,
@d2a DATETIME,
@d2b DATETIME
;
SELECT
@d1 = '2010-04-05', -- Monday
@d2a = '2010-04-16', -- Following Friday
@d2b = '2010-04-18' -- the Sunday following
;
SELECT
DATEDIFF(week, @d1, @d2a) AS weekdiff_a -- returns 1
,DATEDIFF(week, @d1, @d2b) AS weekdiff_b -- returns 2
;
所以我預計,如果SET DATEFIRST 1
執行的,而不是SET DATEFIRST 7
不同的結果。但返回值是相同的,無論如何!
這是怎麼回事?我應該怎麼做才能獲得正確的周差?
感謝您指出我在正確的方向。在你的幫助下,我能夠找到解決我的問題的可靠方案。 – eksortso 2010-04-27 00:26:34