2013-02-28 180 views
0

我在我的select语句如下:如何计算,如果工作日是超过6天,从今天的日期

CASE WHEN DATEADD(DAY, - 5, GETDATE()) > [Date] THEN '6+' ELSE NULL END AS Test 

这工作得很好,但它也包括周末。如果今天的日期--5是>日期,我将如何去计算不计算周末的部分?我只想使用5个工作日,而不是周末。

+0

所以如果在5天回是周末,你想它只是返回'NULL'? – JNK 2013-02-28 21:21:08

+0

是的,这是正确的 – mameesh 2013-02-28 21:21:57

+0

只需将-5更改为-7。五个工作日之外 - 不包括假期 - 将持续一周。瞧,7天。 – 2013-02-28 21:23:42

回答

1

这将排除周六和周日从CASE

CASE WHEN 
    (
     (DATEADD(DAY, - 5, GETDATE()) > [Date]) 
     AND 
     (DATEPART(WEEKDAY, DATEADD(DAY, - 5, GETDATE())) NOT IN (7,1)) 
    ) 
    THEN '6+' END AS Test 
+1

这取决于[DATEFIRST](http://msdn.microsoft.com/en-us/library/ms181598.aspx)设置,是? – Magnus 2013-02-28 21:30:44

+0

DATEFIRST = 1是否正确? – mameesh 2013-02-28 21:52:28

+0

对不起,'DateFirst'需要是1 – JNK 2013-02-28 21:56:28