Generieren Sie genau PostgreSQL-Datumsreihen über mehrere Jahre hinweg
Die Funktion generate_series
ist nützlich, wenn in PostgreSQL eine Datumssequenz zwischen zwei angegebenen Daten generiert wird. Wie die folgende Abfrage zeigt, liefert sie jedoch möglicherweise keine genauen Ergebnisse, wenn sich die Daten auf verschiedene Jahre erstrecken:
<code class="language-sql">select date '2004-03-07' + j - i as AllDate from generate_series(0, extract(doy from date '2004-03-07')::int - 1) as i, generate_series(0, extract(doy from date '2004-08-16')::int - 1) as j</code>
Um dieses Problem zu lösen, kann eine präzisere Lösung verwendet werden, die die Konvertierung von Zeitstempeln beinhaltet:
<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>
In dieser Abfrage wird die Funktion date_trunc
verwendet, um den Datumsanteil aus dem generierten Zeitstempel zu extrahieren und so genaue Ergebnisse sicherzustellen, selbst wenn sich die Daten über verschiedene Jahre erstrecken. Die Funktion generate_series
erstellt eine Folge von Zeitstempeln im Abstand von einem Tag, und die Funktion date_trunc
wandelt diese Zeitstempel dann wieder in Datumsangaben um und stellt so eine zuverlässige Datumsfolge bereit.
Das obige ist der detaillierte Inhalt vonWie kann ich in PostgreSQL genaue Datumsreihen über mehrere Jahre hinweg generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!