84 votes

MySQL : Comment ajouter un jour à un champ date dans une requête ?

Dans ma table, j'ai un champ nommé eventdate en datetime comme 2010-05-11 00:00:00 .

Comment faire pour qu'une requête ajoute un jour à la eventdate Par exemple, si nous sommes aujourd'hui 2010-05-11 je veux montrer en where pour renvoyer tous les enregistrements avec la date de demain.

Mise à jour :

J'ai essayé ceci :

select * from fab_scheduler where custid = 1334666058 and DATE_ADD(eventdate, INTERVAL 1 DAY)

Mais malheureusement, il renvoie le même enregistrement même si j'ajoute un intervalle supérieur à 1.

Résultat :

2010-05-12 00:00:00

Mais je ne veux sélectionner que les enregistrements avec la date du lendemain.

149voto

Daniel Vassallo Points 142049

Vous pouvez utiliser le DATE_ADD() fonction :

... WHERE DATE(DATE_ADD(eventdate, INTERVAL -1 DAY)) = CURRENT_DATE

Il peut également être utilisé dans le SELECT déclaration :

SELECT DATE_ADD('2010-05-11', INTERVAL 1 DAY) AS Tomorrow;
+------------+
| Tomorrow   |
+------------+
| 2010-05-12 |
+------------+
1 row in set (0.00 sec)

8voto

DavidYell Points 6500

Essayez, car c'est ainsi que je procéderais :)

SELECT * 
FROM fab_scheduler
WHERE custid = '123456'
AND CURDATE() = DATE(DATE_ADD(eventdate, INTERVAL 1 DAY))

8voto

Vadim Points 1754

Il est possible d'utiliser le sucre syntaxique spécifique à MySQL :

SELECT ... date_field + INTERVAL 1 DAY

La fonction DATE_ADD est beaucoup plus jolie que la fonction DATE_ADD

5voto

Vili Points 1060
SELECT DATE_ADD(eventdate, INTERVAL 1 DAY)

Documentation sur MySQL

2voto

vzr Points 547

Si vous pouvez utiliser NOW(), ce serait la forme la plus simple :

SELECT * FROM `fab_scheduler` WHERE eventdate>=(NOW() - INTERVAL 1 DAY)) AND eventdate<NOW() ORDER BY eventdate DESC;

Avec MySQL 5.6+, le nombre de requêtes devrait suffire. En fonction du serveur SQL, il se peut que vous deviez utiliser CURRDATE() au lieu de NOW() - qui est l'alias de DATE(NOW()) et ne renverra que la partie date de datetime type de données ;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X