本ページは広告が含まれています。気になる広告をクリック頂けますと、サーバ運営費になります(^^
日付によってSQLを変化させる
Postgresを利用しています。日付によって、集計範囲を変えたいという要件が出てきました。
条件
2/21 – 8/20 とそれ以外に分けたいという事です。WHEN CASE文で条件分岐しcolumnsの表示を変えたりする事ができる事はしっていましたが、WHEN CASEは万能で、WHERE句も条件分岐する事ができます。
Postgresでの日付操作
本年2月21日を作る
make_date(cast(date_part('year',current_date) as int),2,21)
解説
current_date 本日 date_part('year',current_date) 本年 この状態ではduble precision cast(date_part('year',current_date) as int) 年をintにする
make_dateを利用して整数を日付型に変換
年月日をintで指定する必要がある
make_date(year int, month int, day int)
本年8月20日
make_date(cast(date_part('year',current_date) as int),8,20)
WHEN CASEでWHERE句で条件分岐
WHERE
no01 = 18 AND
CASE
WHEN
–本日日付が2/21 – 8/20 だった場合の日付指定範囲
current_date >= make_date(cast(date_part(‘year’,current_date) as int),2,21) AND
current_date = make_date(cast(date_part(‘year’,current_date) as int),2,21) AND dthono = 8
THEN dthono >= make_date(cast(date_part(‘year’,current_date) as int),8,21)
ELSE dthono >= make_date(cast(date_part(‘year’,current_date) as int) – 1,8,21)
END