2010-04-26 75 views
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不同的結果。但返回值是相同的,無論如何!

這是怎麼回事?我應該怎麼做才能獲得正確的周差?

回答