2010-02-01 3 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

ВЫБРАТЬ Foo FROM бар, где event_time> DATE_SUB (NOW(), ИНТЕРВАЛ 5 МИНУТ)

(Не уверен, если это минуты или минуту)

+0

Это 'MINUTE' и может быть сокращен, слишком : 'SELECT foo FROM bar WHERE event_time> (NOW() - INTERVAL 5 MINUTE)' –

+0

спасибо за добавление и уточнение. В любом случае, может быть, это мой фон C, но я предпочитаю DATE_SUB, поскольку мне становится легче читать, особенно в более сложных запросах. – dbemerlin

+0

Приветствия! Прекрасно работает – RailsSon

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' 

Теперь посмотрим, если есть DateTime функции в MySQL, чтобы сделать Date Math так просто передать один штамп даты, и сделайте математику, чтобы вычесть 5 минут из нее и использовать ее как второй параметр в разделе между.

1
WHERE my_timestamp < DATE_SUB(now(), INTERVAL 5 MINUTE) 
Смежные вопросы