php - 如何显示从今天 UNIX_TIMESTAMP 开始的所有记录

标签 php mysql timestamp unix-timestamp

我正在尝试显示今天发生的所有攻击。这是我的 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/

相关文章:

php - 时间戳中的错误日期

regex - 在 Apache NiFi 中从 unix 时间戳中删除点时出现问题

javascript - JSTREE、dnd - 通过拖放更新 SQL 数据库

php - 缺少 Laravel 供应商/自动加载

php - HybridAuth "Tiny Social Hub"示例重定向到/hybridauth/?hauth.start=Facebook&hauth.time

mysql - 连接中表的列总和

mysql - 防止联合全文搜索中的重复结果

java - 如何检查服务器是否已启动超过 15 分钟?

php - 在phpmyadmin中执行大数据查询

mysql - SQL 将单词实例替换为另一个单词实例