Heim >Datenbank >MySQL-Tutorial >Wie erstelle ich eine Datumsreihe ohne temporäre Tabellen oder Variablen?

Wie erstelle ich eine Datumsreihe ohne temporäre Tabellen oder Variablen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-06 12:22:12766Durchsuche

How to Generate a Date Series Without Temporary Tables or Variables?

Generieren einer Datumsreihe ohne temporäre Tabellen oder Variablen

Trotz der Verfügbarkeit von Tabellen mit vordefinierten Datumsbereichen gilt dieser Ansatz als suboptimal. Wie können wir eine Reihe von Datumsangaben innerhalb eines bestimmten Intervalls generieren, ohne auf temporäre Tabellen oder Variablenmanipulationen zurückzugreifen?

Stellen Sie sich das folgende Szenario vor: Ihre Anwendung erfordert einen Bericht, der für jedes Datum eine Zeile zurückgibt, unabhängig von den verfügbaren Daten. Um dies zu erreichen, kann eine einfache Abfrage erstellt werden:

select dates.date, sum(sales.amount)
from <series of dates between X and Y> dates
left join sales on date(sales.created) = dates.date
group by 1

Um die Erstellung einer Tabelle mit zahlreichen Datumsangaben zu vermeiden, wird eine alternative Lösung empfohlen:

select * from 
(select adddate('1970-01-01',t4*10000 + t3*1000 + t2*100 + t1*10 + t0) gen_date from
 (select 0 t0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0,
 (select 0 t1 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1,
 (select 0 t2 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2,
 (select 0 t3 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3,
 (select 0 t4 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4) v
where gen_date between '2017-01-01' and '2017-12-31'

Diese Abfrage generiert effektiv eine Reihe von Daten innerhalb des angegebenen Bereichs, ohne eine separate Tabelle zu erstellen oder Variablen festzulegen.

Das obige ist der detaillierte Inhalt vonWie erstelle ich eine Datumsreihe ohne temporäre Tabellen oder Variablen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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