Daten zwischen mehreren Datumsbereichen generieren
Das Problem der Generierung von Daten zwischen zwei bestimmten Daten ist recht häufig. Bei der Bearbeitung mehrerer Datumsbereiche kann die Lösung jedoch komplexer werden. Diese Frage auf StackOverflow stellt ein solches Szenario dar und bietet eine elegante Lösung mithilfe einer Inline-Ansicht und einer rekursiven Abfrage:
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
Die Inline-Ansicht berechnet einen Bereich von Deltas von 1 bis zur maximalen Differenz zwischen Anfang und Ende Datumsangaben eines beliebigen Bereichs in der Tabelle mithilfe einer rekursiven Abfrage. Dieser Deltabereich wird dann in der Hauptabfrage verwendet, um alle Datumsangaben zwischen dem Start- und Enddatum jedes Bereichs zu generieren.
Die Abfrage verknüpft zunächst die Tabelle t_dates mit der Inline-Ansicht und generiert so alle möglichen Startdatumspaare Daten und Deltas. Anschließend werden die Paare herausgefiltert, bei denen das resultierende Datum außerhalb des Enddatums des entsprechenden Bereichs liegen würde. Abschließend sortiert die Abfrage die Ergebnisse nach ID und Datum.
Diese Lösung ist flexibel und kann zur Generierung von Daten für beliebig viele Datumsbereiche verwendet werden. Es nutzt die Leistungsfähigkeit rekursiver Abfragen, um eine präzise und effiziente Möglichkeit zur Lösung dieses Problems bereitzustellen.
Das obige ist der detaillierte Inhalt vonWie generiert man in SQL Datumsangaben über mehrere Datumsbereiche hinweg?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!