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;
掲げている使命
好きとスキルを駆使して、心身と経済が豊かな日本社会を創造する
いま、目の前で困っていることがある方のために僕の「好き」と「スキル」が何かのお役にたつかもしれません。
こちら(↓)の自己紹介で僕の得意を書いていますので、お困り事のある方は、コメントをいただけるとありがたいです。
支援のお願い
本記事は無料でお読みいただけますが、投げ銭形式にしているので、気に入ったらご購入いただけると嬉しいです。
また、下記リンクのご支援をいただけると励みになります。
素材引用元
アイコン
見出し
この記事が気に入ったらサポートをしてみませんか?