Heim > Datenbank > MySQL-Tutorial > Wie generiere ich alle Daten innerhalb mehrerer Datumsbereiche in SQL?

Wie generiere ich alle Daten innerhalb mehrerer Datumsbereiche in SQL?

Mary-Kate Olsen
Freigeben: 2025-01-05 16:11:43
Original
812 Leute haben es durchsucht

How to Generate All Dates Within Multiple Date Ranges in SQL?

Daten innerhalb mehrerer Datumsbereiche generieren

Wenn die Anforderung über einen einzelnen Datumsbereich hinausgeht, stellt die Generierung aller Daten innerhalb mehrerer Datumsbereiche eine Herausforderung dar . Dieser Artikel befasst sich mit solchen Szenarien und bietet eine effektive Lösung.

Das Problem

Wie in der bereitgestellten SQL-Fiddle dargestellt, besteht die Aufgabe darin, alle Daten für einen bestimmten Satz zu generieren mehrerer Datumsbereiche wie folgt:

<br>ID START_DATE END_DATUM<br>101. 1. April 2013 10. April 2013<br>102. 10. Mai 2013 12. Mai 2013<br>

Die Lösung

Die folgende Abfrage befasst sich mit diesem Problem Problem:

select 
  A.ID, 
  A.START_DATE+delta dt
from 
  t_dates A, 
  (
     select level-1 as delta 
     from dual 
     connect by level-1 <= (
       select max(end_date - start_date) from t_dates
     )
  )
where A.START_DATE+delta <= A.end_date
order by 1, 2
Nach dem Login kopieren

Aufschlüsselung der Lösung

  • Die Unterabfrage erstellt eine hierarchische Struktur (mithilfe von CONNECT BY), um eine Folge von Zahlen bis zum zu generieren maximale Dauer der Datumsbereiche.
  • Die Hauptabfrage verbindet diese Sequenz mit den eingegebenen Datumsbereichen und fügt die Sequenznummern am Anfang hinzu Datumsangaben, um alle möglichen Datumsangaben zu generieren.
  • Die WHERE-Klausel stellt sicher, dass nur gültige Datumsangaben innerhalb jedes Bereichs generiert werden.
  • Die ORDER BY-Klausel sortiert die Ausgabe nach ID und dann nach Datum.

Beispielausgabe

Für die bereitgestellte Eingabe gibt die Abfrage Folgendes zurück Ausgabe:

<br>ID-Daten<br>101. 01. April 2013<br>101. 02. April 2013<br>101. 03. April 2013<br>101. 04. April 2013<br>101. April, 05. 2013<br>101. 06. April 2013<br>101. 07. April 2013<br>101. 08. April 2013<br>101. 09. April 2013<br>101. 10. April 2013<br>102 10. Mai 2013<br>102. 11. Mai 2013<br>102. 12. Mai 2013<br>

Das obige ist der detaillierte Inhalt vonWie generiere ich alle Daten innerhalb mehrerer Datumsbereiche in SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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