在 PostgreSQL 中產生跨非連續年份的時間序列
在 PostgreSQL 中產生兩個日期之間的完整時間序列需要仔細考慮,特別是在處理跨越多年的日期時。 在這種情況下,使用 generate_series
和 extract(doy)
的常見方法可能會產生不準確的結果。
更穩健的方法
卓越的解決方案將 PostgreSQL 的 generate_series
函數與 date_trunc
和 interval
結合使用。無論年份如何,該技術都能可靠地產生任何日期範圍內的時間序列。
以下查詢舉例說明了這種改進的方法:
<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>
這是一個細分:
generate_series('2007-02-01'::timestamp, '2008-04-01'::timestamp, '1 day'::interval)
:這會產生一系列時間戳,在指定的開始日期和結束日期之間按一天遞增。 date_trunc('day', dd)
:此函數將時間戳截斷到每天的開始,刪除時間部分。 ::date
:這會將產生的時間戳轉換為 date
資料類型以獲得更清晰的輸出。 這種改進的方法提供了一種精確可靠的方法,用於在 PostgreSQL 中建立跨非連續年份的時間序列。
以上是如何在 PostgreSQL 中產生非連續年份之間的時間序列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!