2016-01-21
PostgreSQL覚書 年間日別レコードを作る
1年分の日付データを作りたい。もちろん一括で。
できないものかと探すと、あった。
SELECT arr.i AS date1 FROM generate_series( cast('2016-1-1' as timestamp) , cast('2016-1-1' as timestamp) + '12 months' + '-1days' , '1days' ) as arr(i)
Series Generating Functions(集合を返す関数)・・・
よくわかりヘンが、generate_seriesの1つめの引数をスタートとして、2つ目の引数まで1データずつレコードを作成してくれる便利なもの。
1,2の引数がINT型であれば、3つ目の引数はなく、+1しながらレコードが作られる。
1,2の引数がTIMESTAMP型であれば、3つ目の引数にインターバル設定をして、インターバル設定分プラスしながらレコードが作られる。(上の例だと1日ずつ)