2016-11-30 14 views
1

私は平日を除く就業日を表示することができました。 しかし、今私は銀行の休日も除外する方法を知る必要があります。助けてください?銀行休業日を勤務日計算から除外する方法は?

これは私の現在のコードです:

DECLARE @StartDate DATETIME 
DECLARE @EndDate DATETIME 
SET @StartDate = '2016/01/01' 
SET @EndDate = '2017/01/01' 

SELECT 
    (DATEDIFF(dd, @StartDate, @EndDate) + 1) 
    -(DATEDIFF(wk, @StartDate, @EndDate) * 2) 
    -(CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END) 
    -(CASE WHEN DATENAME(dw, @EndDate) = 'Saturday' THEN 1 ELSE 0 END) 
    DECLARE @TotalDays INT,@WorkDays INT 
    SET @TotalDays = (DATEDIFF(dd, @StartDate, @EndDate) +1) 
    print @TotalDays 
+0

タグあなたが使用しているDBMSが動作するはずだと思います。 (そのコードはANSI SQLとはかなり離れています) – jarlh

+2

これらを非稼働日としてマークすることができる日付表の作成を検討しましたか? https://www.mssqltips.com/sqlservertip/4054/creating-a-date-dimension-or-calendar-table-in-sql-server/ –

+0

いいえ、私はあなたが私がそれらを作成して除外できる方法を教えてくれませんか?それら? –

答えて

0

はこれを試してみて、私はそれが

SELECT COUNT(1) 
    FROM bankholidays 
    WHERE (@Region = 1 and Column1 BETWEEN @StartDate AND @EndDate) 
    or (@Region = 2 and Column2 BETWEEN @StartDate AND @EndDate 
    or (@Region not in (1,2) and Column3 BETWEEN @StartDate AND @EndDate 
関連する問題