紙一重の積み重ね

アラフォーのエンジニアがなれる最高の自分を目指して、学んだことをこつこつ情報発信するブログです。

【PostgreSQL10】日付の範囲検索条件まとめ。初日、末日、Nヶ月前の取得方法

f:id:yokoyantech:20181112174646p:plain

やりたいこと

  • BETWEEN検索で、今月初日 00:00:00~末日 23:59:59の検索がしたい
  • BETWEEN検索で、先月初日 00:00:00~先月末日 23:59:59の検索がしたい

取得したい値

実行日は、2018/11/13。

今月初日(時間なし)

-- 2018/11/01
SELECT DATE_TRUNC('month',now())

今月末日(時間なし)

-- 2018/11/30
SELECT DATE_TRUNC('month',now()) + '1 month' + '-1 day'

今月末日(時間あり)

-- 2018/11/30 23:59:59
SELECT DATE_TRUNC('month',now()) + '1 month' + '-1 second'

先月初日

-- 2018/10/01
SELECT DATE_TRUNC('month',now()) + '-1 month'

先月末日(時間なし)

-- 2018/10/31
SELECT DATE_TRUNC('month',now()) + '-1 day'

先月末日(時間あり)

-- 2018/10/31 23:59:59
SELECT DATE_TRUNC('month',now()) + '-1 second'

先月のYYYYMM

-- 201810
SELECT to_char(DATE_TRUNC('month',now()) + '-1 month','YYYYMM')