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

未分類

本ページは広告が含まれています。気になる広告をクリック頂けますと、サーバ運営費になります(^^

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

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

条件

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

Postgresでの日付操作

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

タイトルとURLをコピーしました