2010-02-01 138 views
1

我有一个表,其中包含发生在我的应用程序中的事件,如登录人员和更改设置的人员。按时间限制SQL结果,MySQL

它们对按以下格式事件的日期/时间:

2010-01-29 10:27:29 

是否可以使用SQL来选择只在最后5分钟发生的事件?

所以如果日期/时间是2010-01-29 10:27:29它只会选择发生在10:27:29和10:22:29之间的事件吗?

干杯

EEF

回答

3

SELECT富FROM酒吧,在那里EVENT_TIME> DATE_SUB(NOW(),间隔5分钟)

(不知道这是否分钟或分钟)

+0

这是'MINUTE'并且可以缩短,也:'SELECT foo FROM bar WHERE event_time>(NOW() - INTERVAL 5 MINUTE)' – 2010-02-01 13:47:56

+0

感谢您的补充和澄清。无论如何,也许这是我的C背景,但我更喜欢DATE_SUB,因为我发现它更易于阅读,特别是在更复杂的查询中。 – dbemerlin 2010-02-01 14:27:55

+0

干杯!完美运作 – RailsSon 2010-02-02 12:25:21

0

你应该提供表和列名,使我们很容易回答你的问题。

你可以写SQL作为

SELECT * 
FROM Table 
WHERE DateTimeColumnName <= '2010/01/29 10:27:29' 
AND DateTimeColumnName >= '2010/01/29 10:22:29' 

,或者您可以使用BETWEEN

SELECT * 
FROM Table 
WHERE DateTimeColumnName BETWEEN '2010/01/29 10:22:29' AND '2010/01/29 10:27:29' 

现在,看是否有在MySQL的日期时间函数做一个日期数学所以只需通过一个单一的日期戳,并做数学从它减去5分钟,并将其用作between子句中的第二个参数。

1
WHERE my_timestamp < DATE_SUB(now(), INTERVAL 5 MINUTE)