2016-11-30 2 views
1

Ich konnte Werktage ohne Wochentage anzeigen. Aber jetzt muss ich wissen, wie man auch Bankfeiertage ausschließt. Bitte helfen Sie?Wie können Feiertage von der Berechnung der Arbeitstage ausgeschlossen werden?

Dies ist mein aktueller Code:

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

Tag des dbms Sie verwenden funktionieren soll. (Dieser Code ist weit entfernt von ANSI SQL.) – jarlh

+2

Haben Sie überlegt, eine Datumstabelle zu erstellen, in der Sie diese als arbeitsfreie Tage markieren können? https://www.mssqltips.com/sqlservertip/4054/creating-a-date-dimension-or-calendar-table-in-sql-server/ –

+0

Nein, ich habe nicht, können Sie mir helfen, wie ich sie erstellen und ausschließen kann Sie? –

Antwort

0

dies ausprobieren, ich denke, es

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 
Verwandte Themen