2017-06-25 99 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 
相關問題