見出し画像

IT エンジニア日記 ~Prest DB で日付比較~ -2024/06/27-

どうも。すこぶる体調が悪い clown です。

ちょっと心配事が続いてて、吐き気になって表面化してて、けっこうしんどい。それでも仕事はあるから、全力で仕事してる。

Prest DB で日付や時間の比較をしたい。
まず、いまの日時を取得するには

DATE_FORMAT(current_time, '%Y-%m-%d %H:%i:%s')

比較に使いたいカラムを日付に整形するには

TD_TIME_FORMAT(TD_TIME_PARSE(SUBSTR(created_at, 1, 19)), 'yyyy-MM-dd HH:mm:ss', 'JST')

これを比較すればいい。
たまに、対象カラムの n 日前と今日が一緒だったらみたいなことがあるので、DATE_ADD 関数や TD_TIME_ADD 関数を使うといい。

TD_TIME_FORMAT(TD_TIME_ADD(SUBSTR(created_at, 1, 19), '-1d'), 'yyyy-MM-dd HH:mm:ss', 'JST')

こういう書き方がわかると、日付比較しやすくなって、こんな書き方ができるようになった。

SELECT
  CASE
    WHEN
      DATE_FORMAT(current_time, '%Y-%m-%d %H:%i:%s')
      =
      TD_TIME_FORMAT(TD_TIME_ADD(SUBSTR(created_at, 1, 19), '-1d'), 'yyyy-MM-dd HH:mm:ss', 'JST')
    THEN 1
    WHEN
      DATE_FORMAT(current_time, '%Y-%m-%d %H:%i:%s')
      <
      TD_TIME_FORMAT(TD_TIME_ADD(SUBSTR(created_at, 1, 19), '-1d'), 'yyyy-MM-dd HH:mm:ss', 'JST')
    THEN 2
    WHEN
      DATE_FORMAT(current_time, '%Y-%m-%d %H:%i:%s')
      >
      TD_TIME_FORMAT(TD_TIME_ADD(SUBSTR(created_at, 1, 19), '-1d'), 'yyyy-MM-dd HH:mm:ss', 'JST')
    THEN 3
  END
  FROM
    table;

掲げている使命

好きとスキルを駆使して、心身と経済が豊かな日本社会を創造する

いま、目の前で困っていることがある方のために僕の「好き」と「スキル」が何かのお役にたつかもしれません。
こちら(↓)の自己紹介で僕の得意を書いていますので、お困り事のある方は、コメントをいただけるとありがたいです。



支援のお願い

本記事は無料でお読みいただけますが、投げ銭形式にしているので、気に入ったらご購入いただけると嬉しいです。
また、下記リンクのご支援をいただけると励みになります。

素材引用元

アイコン

見出し

この記事が気に入ったらサポートをしてみませんか?