Überprüfen Sie, ob ein Datumsbereich ein Wochenende hat

8

Wenn ich zwei Termine habe, kann ich herausfinden, wie viele Tage, Stunden, Minuten usw. zwischen den beiden Terminen mit datediff liegen, z. B .:

%Vor%

Wie finde ich heraus, ob der Zeitraum ein Wochenende umfasst?

Der Grund, warum ich wissen möchte, ob der Zeitraum ein Wochenende umfasst, ist, weil ich das Wochenende von der Tages- oder Stundenzählung abziehen möchte. Wenn der Starttag Freitag ist und das Enddatum Montag ist, sollte ich nur 1 Tag oder 24 Stunden erhalten.

Datumsteil 1 = Sonntag und Datumsteil 7 = Samstag auf meinem Server.

    
oshirowanen 14.06.2013, 14:40
quelle

6 Antworten

6

Ich habe eine Funktion, die Arbeitstage zwischen zwei Daten berechnet, die Basisabfrage ist

%Vor%

Sie könnten also herausfinden, ob die Daten das Wochenende einschließen, wenn die Arbeitstage anders sind als die Tage in Tagen

%Vor%

oder einfacher

%Vor%     
JamieA 14.06.2013, 14:51
quelle
3

Sie haben einen Wochenendtag, wenn eine der folgenden drei Bedingungen zutrifft:

  1. Der Wochentag (als Ganzzahl) des Enddatums ist kleiner als der Wochentag des Startdatums

  2. Jeder Tag ist selbst ein Wochenendtag

  3. Das Angebot umfasst mindestens sechs Tage

.

%Vor%     
Joel Coehoorn 14.06.2013 14:49
quelle
1

Ein Weg, zeigt Ihnen nur, wie Sie eine Tabelle von Zahlen für diese verwenden können

%Vor%

Beispiel, um alle Wochenenden zwischen zwei Daten zurückzugeben

%Vor%

Ergebnisse

%Vor%     
SQLMenace 14.06.2013 14:51
quelle
0

Sie können folgende Funktionen verwenden. Der erste verschiebt ein bestimmtes Start- oder Enddatum auf Montag (Freitag wenn rückwärts), wenn es am Wochenende beginnt. Die Sekunde berechnet die Sekunden zwischen zwei Daten ohne Wochenenden. Dann müssen Sie nur überprüfen, ob die Gesamttage den Tagen ohne Weksends entsprechen (Demo unten).

%Vor%

Dann können Sie die Informationen auf diese Weise erhalten:

%Vor%

Hier ist eine Demo : Ссылка

%Vor%     
Tim Schmelter 14.06.2013 15:08
quelle
0

Hier ist die einfache und allgemeine Abfrage. Sie können das Ergebnis durch rekursive Abfrage erreichen. Überprüfen Sie die folgende Abfrage

%Vor%

es wird definitiv für Sie arbeiten.

    
Hiren Dhaduk 14.06.2013 15:16
quelle
0

Sie können einen rekursiven CTE verwenden, um die Daten zwischen dem Bereich

abzurufen %Vor%

und dann filtern Sie die Wochenenden mit ..

%Vor%     
Talasila 14.06.2013 15:34
quelle