Heim > Datenbank > MySQL-Tutorial > Wie kann SQL aufeinanderfolgende Datumsbereiche identifizieren?

Wie kann SQL aufeinanderfolgende Datumsbereiche identifizieren?

Susan Sarandon
Freigeben: 2025-01-01 01:20:08
Original
965 Leute haben es durchsucht

How Can SQL Identify Consecutive Date Ranges?

Aufeinanderfolgende Datumsbereiche mit SQL erkennen

Einführung

Beim Vorbereiten von Daten für Kalenderanwendungen Oft ist es erforderlich, aufeinanderfolgende Datumsbereiche aus einer Datumsfolge zu extrahieren. Diese Aufgabe kann eine Herausforderung sein, insbesondere wenn die Datumsangaben nicht gleichmäßig verteilt sind.

Lösung mit SQL

Um dieses Problem mit SQL zu lösen, können wir den folgenden Ansatz verwenden:

  1. Erstellen Sie eine Zeilennummernspalte: Weisen Sie jedem Datum eine Zeilennummer zu, indem Sie ROW_NUMBER() verwenden. Funktion. Dadurch wird für jedes Datum eine eindeutige Kennung erstellt.
  2. Nach Datumsdifferenz gruppieren:Gruppieren Sie die Daten nach der Differenz zwischen ihren Zeilennummern und dem Datum selbst. Dieser Unterschied ist innerhalb einer aufeinanderfolgenden Sequenz unveränderlich.
  3. Start- und Enddatum finden: Bestimmen Sie das minimale und maximale Datum innerhalb jeder Gruppe mithilfe der Funktionen MIN() und MAX(). Diese stellen das Start- und Enddatum des aufeinanderfolgenden Bereichs dar.

SQL-Abfrage

Die folgende SQL-Abfrage implementiert den oben genannten Ansatz:

WITH t AS (
  SELECT InfoDate d,ROW_NUMBER() OVER(ORDER BY InfoDate) i
  FROM table_name
  GROUP BY InfoDate
)
SELECT MIN(d),MAX(d)
FROM t
GROUP BY DATEDIFF(day,i,d)
Nach dem Login kopieren

Ergebnis

Die Abfrage erzeugt Folgendes Ausgabe:

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

Diese Ausgabe liefert die Start- und Enddaten aller aufeinanderfolgenden Datumsbereiche in den Originaldaten.

Das obige ist der detaillierte Inhalt vonWie kann SQL aufeinanderfolgende Datumsbereiche identifizieren?. 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