我正在尝试显示今天发生的所有攻击。这是我的 php 页面中当前的 SQL。但它不显示今天发生了多少次。
$TodayAttacks = $odb->query("SELECT COUNT(id) FROM `logs` WHERE `date` BETWEEN DATE_SUB(CURDATE(), INTERVAL '-1' DAY) AND UNIX_TIMESTAMP()")->fetchColumn(0);
最佳答案
如果“今天”是指“从今天午夜开始”,您的查询应如下所示:
SELECT COUNT(id) FROM logs
WHERE date >= CURDATE();
如果日志中的日期值可能大于今天的日期(嘿,奇怪的事情发生了!)那么您需要这个(我建议不要使用 BETWEEN
进行日期比较):
SELECT COUNT(id) FROM logs
WHERE date >= CURDATE()
AND date < DATE_ADD(CURDATE(), INTERVAL 1 DAY);
如果您的意思是“过去 24 小时内”,您的查询将如下所示:
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 .
关于php - 如何显示从今天 UNIX_TIMESTAMP 开始的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49590425/