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.