我有一个简单的脚本,每30秒查询一次数据库,以获取setInterval()的最新通知。如何仅显示小于或等于15分钟前的行?我不想展示超过15分钟的任何东西。现在我使用的东西不到24小时,这是好的但不够精确。
Curent Query:
SELECT * FROM notifications n
JOIN employees e ON n.fromEmployee_id=e.employee_id
WHERE n.lastUpdate >= DATE_SUB(NOW(), INTERVAL 1 DAY)
ORDER BY n.id DESC LIMIT 1
答案 0 :(得分:1)
最有效的方法是将时间戳(和时间戳,不使用其上的任何函数)与可以计算为每行的常量的表达式进行比较,这样mysql可以使用在timestamp列上定义的索引。
SELECT * FROM myTable
WHERE lastupdated >= NOW() - INTERVAL 15 MINUTE
答案 1 :(得分:1)
只需更改间隔:
SELECT *
FROM notifications n JOIN
employees e
ON n.fromEmployee_id = e.employee_id
WHERE n.lastUpdate >= DATE_SUB(NOW(), INTERVAL 15 minute)
ORDER BY n.id DESC
LIMIT 1;
如果您想要所有行,则可能不需要LIMIT 1
。