Heim > Datenbank > MySQL-Tutorial > Wie generiert man effizient einen Datumsbereich in SQL?

Wie generiert man effizient einen Datumsbereich in SQL?

Linda Hamilton
Freigeben: 2025-01-23 17:22:13
Original
181 Leute haben es durchsucht

How to Efficiently Generate a Date Range 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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
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