Heim >Datenbank >MySQL-Tutorial >Wie generiert man effizient einen Datumsbereich in SQL?
Kenntnisse zur Generierung von SQL-Datumsbereichen
Es gibt viele Möglichkeiten, in SQL eine Liste von Datumsangaben innerhalb eines bestimmten Bereichs zu erstellen. In diesem Artikel wird die Generierung der Datumssequenz von „20.01.2010“ bis „24.01.2010“ als Beispiel verwendet, um eine effiziente Lösung vorzustellen.
Diese Methode verwendet eine Unterabfrage, um eine vollständige Datumssammlung zu generieren. Durch die Kombination von vier verschachtelten Schleifen kann die Unterabfrage effizient Datumssequenzen von bis zu 10.000 Tagen generieren und problemlos auf längere Datumsbereiche erweitert werden.
<code class="language-sql">select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a) + (1000 * d.a) ) DAY as Date from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as d</code>
Wir filtern dann die generierte Datumsliste, um Daten innerhalb des Zielbereichs zu extrahieren:
<code class="language-sql">select a.Date from ( select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a) + (1000 * d.a) ) DAY as Date from (...) as a ) a where a.Date between '2010-01-20' and '2010-01-24'</code>
Die Vorteile dieses Ansatzes sind: keine Schleifen, gespeicherten Prozeduren oder temporären Tabellen erforderlich, effizient und auf mehrere Datenbankplattformen portierbar. Das Generieren von Daten für 10.000 Tage dauert weniger als 0,01 Sekunden, und die Leistung ist auch dann noch hervorragend, wenn Daten von etwa 100.000 Tagen generiert werden.
Das obige ist der detaillierte Inhalt vonWie generiert man effizient einen Datumsbereich in SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!