2010-04-26 4 views
3

두 날짜 사이의 차이를 계산하고 싶습니다. 두 날짜는 이전 일요일이 같은 경우 같은 주 중 일부로 간주됩니다. 이상적으로, 나는이 값을 계산하기 위해 정교한 관용구를 배우는 대신 DATEDIFF을 사용하여 이것을하고 싶습니다. 그러나 몇 주 동안 어떻게 작동하는지 알 수는 없습니다.DATEDIFF는 SQL Server 2005의 주간 차이를 어떻게 계산합니까?

다음 쿼리는 1과 2를 반환합니다. 사전에 SET DATEFIRST 7을 실행하거나 기본적으로 @@DATEFIRST이 7 일 경우 캘린더의 주간이 일요일로 시작하는 경우 의미가 있습니다. SET DATEFIRST 1 대신 SET 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 
; 

그래서 나는 다른 결과를 기대했다. 그러나 반환 값은 상관없이 동일합니다!

여기에 무슨 일이 일어나고 있습니까? 올바른 주간 차이를 얻으려면 어떻게해야합니까?

답변