2017-06-25 9 views
2

私は、setInterval()を使って最新の通知を得るために30秒ごとにデータベースに問い合わせる簡単なスクリプトを持っています。 15分前またはそれ以下の行だけを表示するにはどうすればよいですか?私は15分以上何も見せたくありません。今は24時間以下のものを使っていますが、これは十分に正確ではありません。15分以下のMysQl行を表示するTimestamp

海流問合せ:

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 
関連する問題