Frage:
Sie müssen aufeinanderfolgende Datumsbereiche aus einer Tabelle extrahieren, die a enthält einzelne Spalte mit unsortierten Daten. Diese Bereiche stellen Zeitabschnitte dar, die Start- und Enddaten erfordern, um ein Kalenderobjekt genau auszufüllen.
Lösung:
Ansatz:
Um dieses Problem mit SQL zu lösen, können wir die „Gaps-and-Islands“-Methode anwenden. Diese Methode gruppiert aufeinanderfolgende Daten nach ihrer Differenz zu ihrer Zeilennummer, da dieser Wert für jede aufeinanderfolgende Sequenz konstant bleibt. Anschließend verwenden wir die Funktionen MIN() und MAX(), um das Start- und Enddatum jeder Gruppe zu extrahieren.
SQL-Abfrage:
WITH t AS ( SELECT InfoDate d,ROW_NUMBER() OVER(ORDER BY InfoDate) i FROM @d GROUP BY InfoDate ) SELECT MIN(d),MAX(d) FROM t GROUP BY DATEDIFF(day,i,d)
Erläuterung:
Ausgabe:
Die resultierende Tabelle sollte Folgendes enthalten Spalten:
Diese Ausgabe liefert das Start- und Enddatum für jeden aufeinanderfolgenden Datumsbereich, sodass Sie Ihr Kalenderobjekt damit füllen können die notwendigen Datumsangaben.
Das obige ist der detaillierte Inhalt vonWie identifiziere und extrahiere ich aufeinanderfolgende Datumsbereiche in SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!