显示小于或等于15分钟之前的MysQl行时间戳

时间:2017-06-25 18:56:05

标签: mysql timestamp

我有一个简单的脚本,每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

2 个答案:

答案 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