m6u's blog

便利な製品・サービス・アプリを見つけては、その評価を書き続けるブログ

PostgreSQL:テーブルを作らずに連続した日付を得るのにgenerate_series()関数を使う例

 例えば、今月を含んで過去3年の間の日付を月ごとに得る例。
 (わかりやすくするために、generate_series()の引数を改行してあります。)

select * from generate_series(
    date_trunc('month',current_date)+'-3 years +1 month',
    date_trunc('month',current_date),
    '1 month'
) as months(mon)

 generate_series()関数の引数に、日付データとINTERVAL型を与えればよくて、ひと月ずつ間隔を開けるのもINTERVAL型で解決可能っていう。