web-dev-qa-db-fra.com

MySQL: Comment ajouter un jour au champ datetime dans une requête

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

Comment puis-je faire une requête pour qu'il ajoute un jour à la eventdate Par exemple, si aujourd'hui est 2010-05-11, je veux montrer dans la clause where pour retourner tous les enregistrements avec la date de demain.

Mettre à jour:

J'ai essayé ceci:

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

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

Résultat:

2010-05-12 00:00:00

Mais je veux seulement sélectionner les enregistrements avec la date de demain.

60
phpBOY

Vous pouvez utiliser la fonction DATE_ADD() :

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

Il peut également être utilisé dans l'instruction SELECT:

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

doc MySQL

17
Vili

Essayez-le, car voici comment je le ferais :)

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

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+ requête, abowe devrait faire l'affaire. En fonction du serveur SQL, vous devrez peut-être utiliser CURRDATE() au lieu de NOW() - qui est un alias pour DATE(NOW()) et renverra uniquement la partie date du type de données datetime;

1
vzr

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

SELECT ... date_field + INTERVAL 1 DAY

Est beaucoup plus jolie au lieu de la fonction DATE_ADD

1
Vadim

Que dis-tu de ça:

select * from fab_scheduler where custid = 1334666058 and eventdate = eventdate + INTERVAL 1 DAY
0
ErikS

Vous pouvez essayer ceci:

SELECT DATE(DATE_ADD(m_inv_reqdate, INTERVAL + 1 DAY)) FROM  tr08_investment
0
Amit Prajapati