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:
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
@ 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 –
fait pas de travail .. encore me donner seulement 2 enregistrements de même date et heure -07-08 07:57:45 ' – Autolycus