Heim > Datenbank > MySQL-Tutorial > Wie identifiziere und extrahiere ich aufeinanderfolgende Datumsbereiche in SQL?

Wie identifiziere und extrahiere ich aufeinanderfolgende Datumsbereiche in SQL?

Mary-Kate Olsen
Freigeben: 2025-01-03 05:34:38
Original
131 Leute haben es durchsucht

How to Identify and Extract Consecutive Date Ranges in SQL?

Identifizieren aufeinanderfolgender Datumsbereiche in SQL

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)
Nach dem Login kopieren

Erläuterung:

  • Die WITH-Klausel erstellt einen Common Table Expression (CTE) mit dem Namen t.
  • Der CTE wählt die InfoDate-Spalte d und die Zeilennummer i für jede Zeile in der Originaltabelle @d aus.
  • Die Daten werden nach InfoDate gruppiert, um die Eindeutigkeit innerhalb jeder aufeinanderfolgenden Sequenz sicherzustellen.
  • Die SELECT-Anweisung berechnet die minimalen und maximalen Daten für jede Gruppe und stellt die Start- und Enddaten aufeinanderfolgender Bereiche dar. bzw..
  • Die Funktion DATEDIFF() wird verwendet, um die Differenz zwischen der Zeilennummer und dem Datum zu berechnen, die innerhalb jeder aufeinanderfolgenden Sequenz konstant bleibt, wodurch aufeinanderfolgende Daten effektiv gruppiert werden.

Ausgabe:

Die resultierende Tabelle sollte Folgendes enthalten Spalten:

  • StartDate
  • EndDate

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage