1. ホーム
  2. postgresql

[解決済み] PostgreSQLで2つの日付の間の時系列を生成する

2022-10-10 04:18:04

質問

私はうまく2つの指定された日付の間に日付のシリーズを生成するこのようなクエリを持っています。

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

の間にある162個の日付を生成します。 2004-03-072004-08-16 で、これは私が欲しいものです。このコードの問題点は、2つの日付が異なる年のものである場合、正しい答えが得られないということです。 2007-02-012008-04-01 .

もっと良い解決策はないのでしょうか?

どのように解決するのですか?

intとの変換を行わずに(代わりにタイムスタンプとの変換を行う)行うことができます。

SELECT date_trunc('day', dd):: date
FROM generate_series
        ( '2007-02-01'::timestamp 
        , '2008-04-01'::timestamp
        , '1 day'::interval) dd
        ;