PostgreSQL で date 型の四則演算ポイント
- ORACLE と異なり、ADD_MONTH や LASTDAY 関数がない。
- interval 型があるのでこれを利用する。
- 一旦文字列型にして必要な部分を切り出して、、、という操作はしないようにする。出来上がった SQL を見た時、意図が伝わらないため。
日付を足し引きする PostgreSQL 例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | -- 指定日の n 日後 SELECT CAST ( '20170330' AS date ) + make_interval(days => 1); SELECT CAST ( '20170330' AS date ) + interval '1 day' ; SELECT CAST ( '20170330' AS date ) + 1; -- 指定日の月初日 SELECT date_trunk( 'month' , CAST ( '20170330' AS date )); -- 指定日の翌月の月初日 SELECT date_trunk( 'month' , CAST ( '20170330' AS date )) + interval '1 month' ; -- 指定日の月末の最終秒 SELECT date_trunk( 'month' , CAST ( '20170330' AS date )) + interval '1 month' - interval '1 second' ; -- 指定日から n ヶ月前の日 SELECT CAST ( '20170330' AS date ) + make_interval( month => 3); |
おわりに
次の公式ページが参考になりました。ありがとう存じます!
以上です。