Generieren einer Zeitreihe über nicht aufeinanderfolgende Jahre in PostgreSQL
Das Generieren einer vollständigen Zeitreihe zwischen zwei Daten in PostgreSQL erfordert sorgfältige Überlegungen, insbesondere wenn es um Daten geht, die sich über mehrere Jahre erstrecken. Gängige Methoden, die generate_series
mit extract(doy)
verwenden, können in solchen Szenarien zu ungenauen Ergebnissen führen.
Ein robusterer Ansatz
Eine überlegene Lösung nutzt die generate_series
-Funktion von PostgreSQL in Verbindung mit date_trunc
und interval
. Diese Technik generiert zuverlässig Zeitreihen über jeden Datumsbereich hinweg, unabhängig vom Jahr.
Die folgende Abfrage veranschaulicht diese verbesserte Methode:
<code class="language-sql">SELECT date_trunc('day', dd)::date FROM generate_series('2007-02-01'::timestamp, '2008-04-01'::timestamp, '1 day'::interval) dd;</code>
Hier ist eine Aufschlüsselung:
generate_series('2007-02-01'::timestamp, '2008-04-01'::timestamp, '1 day'::interval)
: Dadurch wird eine Folge von Zeitstempeln generiert, die zwischen dem angegebenen Start- und Enddatum um einen Tag erhöht werden.date_trunc('day', dd)
: Diese Funktion kürzt die Zeitstempel auf den Beginn jedes Tages und entfernt die Zeitkomponente.::date
: Dadurch werden die resultierenden Zeitstempel für eine sauberere Ausgabe in den Datentyp date
umgewandelt.Dieser verfeinerte Ansatz bietet eine präzise und zuverlässige Methode zum Erstellen von Zeitreihen über nicht aufeinanderfolgende Jahre in PostgreSQL.
Das obige ist der detaillierte Inhalt vonWie erstelle ich eine Zeitreihe zwischen nicht aufeinanderfolgenden Jahren in PostgreSQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!