PostgreSQL で date 型の四則演算ポイント
- ORACLE と異なり、ADD_MONTH や LASTDAY 関数がない。
- interval 型があるのでこれを利用する。
- 一旦文字列型にして必要な部分を切り出して、、、という操作はしないようにする。出来上がった SQL を見た時、意図が伝わらないため。
日付を足し引きする PostgreSQL 例
-- 指定日の 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);
おわりに
次の公式ページが参考になりました。ありがとう存じます!
以上です。