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

Wie identifiziere ich aufeinanderfolgende Datumsbereiche in SQL?

Linda Hamilton
Freigeben: 2024-12-31 12:22:13
Original
821 Leute haben es durchsucht

How to Identify Consecutive Date Ranges in SQL?

Aufeinanderfolgende Datumsbereiche mit SQL erkennen

Um aufeinanderfolgende Datumsbereiche in einer Spalte mit einer Datumsfolge zu identifizieren, kann SQL eingesetzt werden, um das Start- und Enddatum effizient zu extrahieren jedes einzelnen Bereichs.

Betrachten Sie den folgenden Datensatz:

InfoDate

2013-12-04
2013-12-05
2013-12-06

2013-12-09
2013-12-10

2014-01-01
2014-01-02
2014-01-03

2014-01-06
2014-01-07

2014-01-29
2014-01-30
2014-01-31

2014-02-03
2014-02-04
Nach dem Login kopieren

Das Ziel besteht darin, den Start und zu extrahieren Enddaten jedes aufeinanderfolgenden Datumsbereichs, was zu Folgendem führt:

StartDate     EndDate

2013-12-04    2013-12-06
2013-12-09    2013-12-10
2014-01-01    2014-01-03
2014-01-06    2014-01-07
2014-01-29    2014-01-31
2014-02-03    2014-02-04
Nach dem Login kopieren

Eine vereinfachte und effiziente SQL-Lösung kann mit den folgenden Schritten entwickelt werden:

  1. Weisen Sie jedem eine eindeutige Zeilennummer zu Datum in der Spalte „InfoDate“ ein, wodurch eine Hilfstabelle mit dem Namen „t“ erstellt wird. Diese Nummerierung erleichtert die Gruppierung aufeinanderfolgender Daten.
  2. Gruppieren Sie die Zeilen in t nach der Differenz zwischen dem Datum und der entsprechenden Zeilennummer. Durch diese Gruppierung entstehen „Lücken“ in der Reihenfolge der Datumsangaben.
  3. Innerhalb jeder Gruppe stellen die minimalen und maximalen Datumsangaben die Start- und Enddaten des aufeinanderfolgenden Datumsbereichs dar.

Die SQL Die Abfrage, um dies zu erreichen, lautet:

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

Das obige ist der detaillierte Inhalt vonWie identifiziere 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