Sie können eine Calendar Tabelle verwenden und alle Werktage darin speichern.
Oder Sie können die folgende einfache Formel verwenden, um die Anzahl der Werktage zwischen zwei Daten zu berechnen. Die Formel geht davon aus, dass Samstag und Sonntag keine Geschäftstage sind. Es wird angenommen, dass zwei gegebene Daten Arbeitstage sind.
Alles, was es tut, ist die Berechnung der normalen Differenz in Tagen und dann subtrahiert 2 (Nicht-Geschäft) Tage von diesem Ergebnis für jeden Anfang der Woche.
Beispiel 1
DECLARE @Date0 date = '2016-04-07'; -- Thursday
DECLARE @Date1 date = '2016-04-08'; -- Friday
SELECT
DATEDIFF(day, @Date0, @Date1) -
DATEDIFF(week, @Date0, @Date1) * 2 AS BusinessDays;
Ergebnis
BusinessDays
1
Beispiel 2
DECLARE @Date0 date = '2016-04-08'; -- Friday
DECLARE @Date1 date = '2016-04-11'; -- Monday
SELECT
DATEDIFF(day, @Date0, @Date1) -
DATEDIFF(week, @Date0, @Date1) * 2 AS BusinessDays;
Ergebnis
BusinessDays
1
Beispiel 3
DECLARE @Date0 date = '2016-04-08'; -- Friday
DECLARE @Date1 date = '2016-04-18'; -- Monday
SELECT
DATEDIFF(day, @Date0, @Date1) -
DATEDIFF(week, @Date0, @Date1) * 2 AS BusinessDays;
Ergebnis
BusinessDays
6
Ihre Abfrage würde wie folgt aussehen:
SELECT COUNT(*)
FROM Orders
WHERE
DATEDIFF(day, COALESCE(Date1, Date2), Date0) -
DATEDIFF(week, COALESCE(Date1, Date2), Date0) * 2 <= 1
;
Werktage definieren. Meinst du Mo - Fr oder musst du Feiertage wie Weihnachten ausschließen? Wenn Sie Weihnachten etc. ausschließen müssen, müssen Sie dies in einer Kalendertabelle definieren. –
Entschuldigung, ich brauche Montag bis Freitag – user3175024
Ich schätze, Sie verwenden SQL Server (bitte entsprechend markieren). In diesem Fall können Sie mit der 'DATENAME'-Funktion ermitteln, ob ein Datum an einem Wochenende liegt oder nicht, und danach filtern. –