我正在尝试显示今天发生的所有攻击。这是我在php页面中的当前SQL。然而,它并没有显示今天发生了多少。
$TodayAttacks = $odb->query("SELECT COUNT(id) FROM `logs` WHERE `date` BETWEEN DATE_SUB(CURDATE(), INTERVAL '-1' DAY) AND UNIX_TIMESTAMP()")->fetchColumn(0);
答案 0 :(得分:0)
如果今天是""你的意思是"从今天午夜开始#34;,你的查询应该是这样的:
SELECT COUNT(id) FROM logs
WHERE date >= CURDATE();
如果日志中的日期值可能大于今天的日期(嘿,奇怪的事情发生了!)那么你想要这个(我建议不要使用BETWEEN
进行日期比较):< / p>
SELECT COUNT(id) FROM logs
WHERE date >= CURDATE()
AND date < DATE_ADD(CURDATE(), INTERVAL 1 DAY);
如果您的意思是&#34;在过去24小时内#34;,您的查询将更像是这样:
SELECT COUNT(id) FROM logs
WHERE date >= DATE_SUB(NOW(), INTERVAL 1 DAY);
希望这有帮助。
根据以下评论进行编辑
如果date
列是Unix时间戳值(存储为INT(11)
?),则查询应如下所示:
SELECT COUNT(id) FROM logs
WHERE date >= UNIX_TIMESTAMP(CURDATE());
还可以执行以下操作来获取过去24小时内的记录:
SELECT COUNT(id) FROM logs
WHERE date >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY));
<强> SQL Fiddle here 强>