PostgreSQL テーブルに存在しないデータを複数行生成する

generate_series()

テーブルにない日付データを生成したい要件ができました。
固定ならSELECT文の中に ‘2016/5/22’ as dates でいいのですが、これを複数行指定したい場合、Postgresには便利な関数があります。

generate_series(start, stop)  startからstopまでの刻み1で連続する値を生成します。
generate_series(start, stop, step)  startからstopまでの刻みstepで連続する値を生成します。

○連続した数字をそのまま返す
select * from generate_series(2,4);
generate_series
—————–
2
3
4
(3 rows)

○指定した刻みで、日付を返す
select current_date + s.a as dates from generate_series(0,14,7) as s(a);
dates
————
2004-02-05
2004-02-12
2004-02-19
(3 rows)