web-dev-qa-db-fra.com

Trouver des enregistrements avec un champ de date au cours des dernières 24 heures

Dans ma requête SQL, comment puis-je lui trouver les enregistrements des dernières 24 heures? Par exemple

   SELECT * FROM news WHERE date < 24 hours

Je le fais habituellement en définissant une variable à date () - 1 jour et en la comparant à cela, mais je me demandais si la méthode de requête SQL était plus rapide?

75
user1022585

Vous sélectionnez simplement des dates supérieures à l'heure actuelle moins un jour.

SELECT * FROM news WHERE date >= now() - INTERVAL 1 DAY;
118
a'r
SELECT * FROM news WHERE date > DATE_SUB(NOW(), INTERVAL 24 HOUR)
62
Andrew
SELECT * from new WHERE date < DATE_ADD(now(),interval -1 day);
9
giuseppe

Pour obtenir des enregistrements des dernières 24 heures:

SELECT * from [table_name] WHERE date > (NOW() - INTERVAL 24 HOUR)
7
NarayanaReddy
SELECT * FROM news WHERE date > DATEADD(d,-1,GETDATE())
3
Simon

Il y a tellement de façons de faire cela. Ceux énumérés fonctionnent très bien, mais voici un autre moyen si vous avez un champ datetime:

SELECT [fields] 
FROM [table] 
WHERE timediff(now(), my_datetime_field) < '24:00:00'

timediff() renvoie un objet heure. Ne faites pas l'erreur de le comparer à 86400 (nombre de secondes dans une journée), sinon votre sortie sera erronée.

3
Craig Labenz