Beim Umgang mit mehreren Datumsbereichen kann es eine Herausforderung sein, alle Daten innerhalb dieser Bereiche zu generieren. Lassen Sie uns eine effiziente Lösung erkunden, die dieses Szenario bewältigt.
Die bereitgestellte Eingabe besteht aus zwei Datumsbereichen:
ID START_DATE END_DATE 101 April, 01 2013 April, 10 2013 102 May, 10 2013 May, 12 2013
Unser Ziel ist es, eine Ausgabetabelle zu generieren, die alle Daten innerhalb dieser Bereiche auflistet:
ID Dates 101 April, 01 2013 101 April, 02 2013 101 April, 03 2013 101 April, 04 2013 101 April, 05 2013 101 April, 06 2013 101 April, 07 2013 101 April, 08 2013 101 April, 09 2013 101 April, 10 2013 102 May, 10 2013 102 May, 11 2013 102 May, 12 2013
Um dies zu erreichen, können wir die folgende SQL-Abfrage verwenden:
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 Abfrage generiert alles Mögliche Datumsunterschiede innerhalb des maximalen Datumsbereichs und addiert sie dann zu jedem Startdatum, um die gewünschte Ausgabe zu erzeugen.
Das obige ist der detaillierte Inhalt vonWie generiere ich mit SQL alle Daten innerhalb mehrerer Datumsbereiche?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!