2010-02-01 7 views
1

J'ai une table contenant les événements qui se produisent dans mon application, comme les personnes qui se connectent et les personnes qui modifient les paramètres.Restreindre les résultats SQL par heure, MySQL

Ils ont une date/heure contre l'événement dans le format suivant:

2010-01-29 10:27:29 

Est-il possible d'utiliser SQL pour sélectionner les événements qui ont eu lieu dans les seulement 5 dernières minutes? Donc, si la date/l'heure était 2010-01-29 10:27:29, les événements survenus entre 10:27:29 et 10:22:29 ne seraient sélectionnés que pour les événements survenus entre 10h27 et 29h22?

Vive

Eef

Répondre

3

SELECT foo bar où event_time> DATE_SUB (NOW(), INTERVALLE 5 MINUTES)

(Je ne sais pas si elle est minutes ou minutes)

+0

C'est 'MINUTE' et peut être raccourci aussi : 'SELECT foo FROM bar WHERE event_time> (MAINTENANT() - INTERVALLE 5 MINUTES)' –

+0

merci pour l'addition et la clarification. Quoi qu'il en soit, c'est peut-être mon arrière-plan C mais je préfère le DATE_SUB car je le trouve plus facile à lire, en particulier dans les requêtes plus complexes. – dbemerlin

+0

À la votre! Travailler parfaitement – RailsSon

0

Vous devez fournir les noms de table et de colonne pour le rendre facile pour nous de répondre à votre question.

Vous pouvez écrire SQL comme

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

ou vous pouvez utiliser BETWEEN

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

Maintenant voir s'il y a des fonctions datetime dans MySQL pour faire Math Date donc il suffit de passer un timbre unique date, et faites le calcul pour en soustraire 5 min et l'utiliser comme second paramètre dans la clause between.

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