Postgres current_date 日付によってSQLのWhere句を変化させ る

日付によってSQLを変化させる

Postgresを利用しています。日付によって、集計範囲を変えたいという要件が出てきました。

条件

2/21 – 8/20 とそれ以外に分けたいという事です。WHEN CASE文で条件分岐しcolumnsの表示を変えたりする事ができる事はしっていましたが、WHEN CASEは万能で、WHERE句も条件分岐する事ができます。

Postgresでの日付操作

Postgres日付のマニュアル

本年2月21日を作る

解説

make_dateを利用して整数を日付型に変換

年月日を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

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)