2017-06-25 207 views
2

我有一个简单的脚本,每30秒查询一次数据库以获取setInterval()的最新通知。如何只显示小于或等于15分钟前的行?我不想展示超过15分钟的任何东西。现在我正在使用少于24小时的东西,这很好,但不够精确。显示MysQl行小于或等于15分钟前时间戳

CURENT查询:

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 

回答

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如果你希望所有的行。

+0

好的。我不知道它是那么简单。谢谢! –

1

最有效的方法是比较你的时间戳(只有时间戳,而不使用它的任何函数)可作为常数计算每一行的表达式,这样mysql可以使用定义在你的时间戳列上的索引。

SELECT * FROM myTable 
WHERE lastupdated >= NOW() - INTERVAL 15 MINUTE 
相关问题