2010-08-10 7 views
2

J'ai des enregistrements dans la table mysql et je veux savoir combien d'enregistrements ont été dans les 3, 7 et 12 dernières heures. Quel serait le sql pour ça? Mon champ de date dans le format queenregistrements sql dans les dernières heures

2010-08-09 09:52:27 
2010-08-09 09:52:27 
2010-08-09 09:52:27 
2010-08-09 10:44:46 
2010-08-09 10:44:46 
2010-08-09 11:58:27 
2010-08-09 14:48:22 
2010-08-09 14:48:22 

Répondre

7

Pour les trois dernières heures:

WHERE column BETWEEN DATE_SUB(NOW(), INTERVAL 3 HOUR) 
       AND NOW() 

Pour les sept dernières heures:

WHERE column BETWEEN DATE_SUB(NOW(), INTERVAL 7 HOUR) 
       AND NOW() 

Pour les douze dernières heures:

WHERE column BETWEEN DATE_SUB(NOW(), INTERVAL 12 HOUR) 
       AND NOW() 

Si vous souhaitez spécifier une donnée sous forme de chaîne, utilisez:

WHERE column BETWEEN DATE_SUB(STR_TO_DATE('2010-07-08 07:57:45', '%Y-%m-%d %T'), INTERVAL 3 HOUR) 
       AND STR_TO_DATE('2010-07-08 07:57:45', '%Y-%m-%d %T') 

... mais honnêtement, vous pouvez utiliser ce aussi bien:

WHERE column BETWEEN STR_TO_DATE('2010-07-08 04:57:45', '%Y-%m-%d %T') 
       AND STR_TO_DATE('2010-07-08 07:57:45', '%Y-%m-%d %T') 

Si cela ne fonctionne pas, je me demande si la colonne est stocker des valeurs en tant que chaînes/varchar plutôt que DATETIME.

Référence:

+0

J'utilise la requête suivante mais il didnot me donner les bons résultats $ sql = « SELECT * FROM' order' OÙ myDateField ENTRE DATE_SUB ("2010-07-08 07:57:45", INTERVALLE 3 HEURES) ET "2010-07-08 07:57:45" '; – Autolycus

+0

@ user295189: Utilisez des guillemets simples et non doubles. Et si vous utilisez une chaîne, utilisez 'STR_TO_DATE ('2010-07-08 07:57:45', '% Y-% m-% d% T')' pour convertir une chaîne en DATETIME de façon fiable –

+0

fait pas de travail .. encore me donner seulement 2 enregistrements de même date et heure -07-08 07:57:45 ' – Autolycus

1

En supposant qu'aucun enregistrement portent un horodatage à l'avenir, vous pouvez utiliser:

WHERE myDateField > DATE_SUB(NOW(), INTERVAL 3 HOUR) 

pour les trois dernières heures la valeur des dossiers , et de même pour 7 et 12 heures.

Questions connexes