我需要返回 MySQL 数据库中最近一小时的所有条目。数据库有一个名为的列time,其中包含纪元值。
这段伪代码是我想要实现的,但我不知道如何在 MySQL 中做到这一点。在另一种语言中,我会检查time每行中的 epoch 值的差异不超过 3,600 个。
SELECT * FROM dailyltc WHERE `time` <= 1 hour
Run Code Online (Sandbox Code Playgroud)
不使用函数来转换存储的纪元值使 MySQL 能够使用索引。因此,我更喜欢使用UNIX_TIMESTAMP计算限制,而不是将存储的值转换为 DATETIME 值。
SELECT
*
FROM
dailyltc
WHERE
`time` > UNIX_TIMESTAMP(NOW() - INTERVAL 1 HOUR);
Run Code Online (Sandbox Code Playgroud)
如果存在更新的值,那么您可以简单地添加上限:
SELECT
*
FROM
dailyltc
WHERE
`time` > UNIX_TIMESTAMP(NOW() - INTERVAL 1 HOUR)
AND
`time` <= UNIX_TIMESTAMP(NOW());
Run Code Online (Sandbox Code Playgroud)