2012-02-09 93 views
0

請幫忙。今天和工作日至今年年底之間的工作日數

試圖計算今天和工作數量之間的工作天數,說到SQL年的結束。

我已經開始與下面..日期差異只是今天和年底之間的天數..但我需要它的工作日 - 即其中cal.Weekday =''或HOLIDAY.DateInfo >'

CASe 
    when cal.Weekday = ' 'OR HOLIDAY.DateInfo>' ' then 0 else 1 end as workingdays, 
    DateDiff("y",GETDATE(),DATEADD(s,-1,DATEADD(YY, DATEDIFF(YYYY,0,@StartDate)+1,0))) as enddateddd, 
+1

一工作日定義爲週一至週五,節假日除外? – Yuck 2012-02-09 14:57:22

+0

是因此cal.Weekday =''或HOLIDAY.DateInfo>''carters只有工作日,當我總結,我得到249 – user1143563 2012-02-09 14:59:43

+0

你有一個日曆和(單獨)假期表是正確的嗎?我們可以看到這些佈局嗎? – 2012-02-09 17:01:19

回答

1

這會給你個工作日(MF只),作爲holdays我不知道你的假期是什麼,所以你需要添加部分:

DECLARE @today AS DATE = GETDATE(); 
DECLARE @firstOfNextYear AS DATE = CAST('1/1/' + STR(1 + YEAR(GETDATE())) AS DATE); 

WITH L0 AS (SELECT 1 AS C UNION ALL SELECT 1),  --  2 
    L1 AS (SELECT L0.C FROM L0 CROSS JOIN L0 AS B), --  4 
    L2 AS (SELECT L1.C FROM L1 CROSS JOIN L1 AS B), --  16 
    L3 AS (SELECT L2.C FROM L2 CROSS JOIN L2 AS B), -- 256 
    L4 AS (SELECT L3.C FROM L3 CROSS JOIN L3 AS B), -- 65536 
     N AS (SELECT ROW_NUMBER() OVER(ORDER BY L4.C) AS n FROM L4), 
     D AS (SELECT DATEADD(DAY, n - 1, @today) AS d, n FROM N) 
SELECT COUNT(*) FROM D 
WHERE d < @firstOfNextYear 
    AND DATEPART(WEEKDAY, d) BETWEEN 2 AND 6 
+0

謝謝你會試試這個 – user1143563 2012-02-09 15:27:48

相關問題