最近SQLクエリを書くことが増え、つまづいた部分のメモ。
結論
CONCAT(CAST(DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 DAY), "%Y-%m-%d") AS CHAR), "16:00:00")
やりたかったのは、あるレコードの登録日カラムの値が現在日時を基準に”昨日の16時以降”であるかどうかの判定
ただ、マイナス○時間やマイナス○日とかは出来るものの、時間の指定ができず、、
→MySQLで「おととい」「昨日」「明日」「あさって」
そこで使用したのが、以下の関数
CONCAT関数
→日付と時刻を結合
日付はDATE_SUB関数を使用して今日からマイナス1日
時刻は定時を記載
DATE_FORMAT関数
→DATE_SUB関数で変換した日時を年月日で指定
CAST関数を使用しているのは、日時(型:TIMESTAMP)をCHAR型にキャストするため