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.
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)
SELECT DATE_ADD(eventdate, INTERVAL 1 DAY)
Essayez-le, car voici comment je le ferais :)
SELECT *
FROM fab_scheduler
WHERE custid = '123456'
AND CURDATE() = DATE(DATE_ADD(eventdate, INTERVAL 1 DAY))
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
;
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
Que dis-tu de ça:
select * from fab_scheduler where custid = 1334666058 and eventdate = eventdate + INTERVAL 1 DAY
Vous pouvez essayer ceci:
SELECT DATE(DATE_ADD(m_inv_reqdate, INTERVAL + 1 DAY)) FROM tr08_investment