Sélectionnez les enregistrements de MAINTENANT () -1 jour


138

Existe-t-il un moyen dans une instruction MySQL d'ordonner les enregistrements (via un horodatage) par> = NOW () -1 afin que tous les enregistrements de la veille d'aujourd'hui au futur soient sélectionnés?

Réponses:


269

À en juger par la documentation des fonctions de date / heure , vous devriez pouvoir faire quelque chose comme:

SELECT * FROM FOO
WHERE MY_DATE_FIELD >= NOW() - INTERVAL 1 DAY

comment arriver maintenant à ainsi de suite .. signifie la date actuelle de tous les enregistrements disponibles dans la base de données. ? c'est juste pour un jour mais j'ai besoin de tous les enregistrements maintenant sur les mots. @jon
Muddasir Abbas

Tient-il compte de l'heure locale de l'utilisateur lorsque les enregistrements sont au format UTC?
Adry

1
@Adry: J'en doute, mais vous devriez tester attentivement.
Jon Skeet

63

Sachez que le résultat peut être légèrement différent de ce que vous attendez.

NOW()renvoie un DATETIME.

Et INTERVALfonctionne comme nommé, par exemple INTERVAL 1 DAY = 24 hours.

Donc, si votre script est créé pour s'exécuter 03:00, il manquera le fichier first three hours of records from the 'oldest' day.

Pour une utilisation toute la journée CURDATE() - INTERVAL 1 DAY. Cela reviendra au début de la veille, quel que soit le moment où le script est exécuté.


Voter pour CURDATE ()
rob



8

Je n'ai vu aucune réponse correctement en utilisant DATE_ADDou DATE_SUB:

Soustraire 1 jour de NOW()

...WHERE DATE_FIELD >= DATE_SUB(NOW(), INTERVAL 1 DAY)

Ajouter 1 jour à partir de NOW()

...WHERE DATE_FIELD >= DATE_ADD(NOW(), INTERVAL 1 DAY)

1

lorsque le champ de recherche est horodaté et que vous souhaitez rechercher des enregistrements entre 0 heure hier et 0 heure aujourd'hui, utilisez la construction

MY_DATE_TIME_FIELD between makedate(year(now()), date_format(now(),'%j')-1) and makedate(year(now()), date_format(now(),'%j'))  

au lieu

 now() - interval 1 day
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.