Sélectionnez les enregistrements de NOW () -1 Day

Existe-t-il un moyen dans une instruction MySQL de commander des enregistrements (via un horodatage) par> = NOW () -1 afin que tous les enregistrements de la veille à demain soient sélectionnés?

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

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

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

NOW() renvoie un DATETIME .

Et INTERVAL fonctionne comme indiqué, par exemple INTERVAL 1 DAY = 24 hours .

Donc, si votre script doit tourner à 03:00 , il manquera les first three hours of records from the 'oldest' day .

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

Vous êtes presque là: c’est NOW() - INTERVAL 1 DAY

Sûr que vous pouvez:

 SELECT * FROM table WHERE DateStamp > DATE_ADD(NOW(), INTERVAL -1 DAY) 

lorsque le champ de recherche est horodaté et que vous souhaitez rechercher des enregistrements de 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 

Vous n’avez pas vu de réponse correctement en utilisant DATE_ADD ou 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)