2010-11-13 58 views
2

在MySQL中,我試圖從表格中選擇具有lock_dt 10個小時以上的行。我怎樣才能正確地寫這個sql語句?MYSQL - 如何獲得時差?

select phone from table where ((now() - lock_dt) < 10 hours) 

回答

3
SELECT phone 
FROM table 
WHERE lock_dt > NOW() - INTERVAL 10 HOUR 

使用的時間間隔是非常方便的。此外,我嘗試隔離列,以便可以使用最終索引(有時,即使在lock_dt上有索引,RDBMS也不知道如何使用NOW() - lock_dt的索引)。

此外,您的問題的描述與您的查詢相矛盾。 NOW() - lock_dt < 10 hours表示間隔時間爲以下比10小時。這就是我的查詢所做的。如果你想更多 10小時以上,你必須更改> <。

1
SELECT phone FROM table WHERE lock_dt < DATE_SUB(now(), interval 10 hour);