2016-11-30 6 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