2010-11-13 60 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);