ポートフォリオ作成時に当日投稿された数を表記する機能を実施しようとして苦戦したので、忘備録として残しておく
やりたい事はその日に投稿された投稿数をカウントしてその数を表示するという物
DBに保存されている投稿日時はDATETIME型で保存されている。
ならば当日の日付と投稿日時の日付が同じという条件付けでいけるだろうと安易に以下のコードを作成
カラム:creat_time DATETIME型
$counts = $db->query('SELECT COUNT(*) AS cnt FROM posts WHERE create_time = CURDATE()');
$todayCount = $counts->fetch();
反映されない・・・・・・
何故だ・・・と2時間ほどネットの海を彷徨っていると、
DATETIME型は「2020-05-08 21:33:54」のように日付と時刻までを取得する
それに対してCURDATEは「2020-05-08」と時刻は取得されない。という情報を発見
もうちょい調べるとCURDATEではなく日付を直接入力した場合、
2020-05-08 21:33:54 = 2020-05-08と入力しても実際は
2020-05-08 21:33:54 = 2020-05-08 00:00:00と認識されるとのこと。
これはCURDATEにも当てはまるのか試したところ、
$counts = $db->query('SELECT COUNT(*) AS cnt FROM posts WHERE create_time >= CURDATE()');
$todayCount = $counts->fetch();
反映された!!!
SQLで条件付けする時にはどのような形で保存されているのかよく確認する必要があると思い知らされました・・・