ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

SQL:PostgreSQLでSQL上で日付を判定して、結果を変える方法

毎年5月1日に会費を処理システムがあり、バッチ処理で夜間に処理してしまえばいいのですが、なぜか日中に処理を行うことになっています。
そのために、5月1日に会費の処理が行われるまで、システムは会費が処理されていないために利用できない状態になっています。

利用できない状態を避けるために、現在の日付が5月1日のときだけ、4月30日として判定すれば利用できるので、SQLで行っている判定処理において、現在の日付を判定して変更できないか調べてみました。

調べた結果、PostgreSQLでは以下のように、to_char()で日付だけ取り出して判定し、'-1 days' を加算すれば4月30日が生成できることがわかりました。

SELECT 
  CASE 
    WHEN to_char(now(), 'mm/dd') = '05/01' THEN now() + '-1 days' 
    ELSE now() 
  END AS test_date 
FROM member 

WHEREの中でも同様にできたので、テストをして本番環境に反映するつもりです。