Mysql
 sql >> Base de données >  >> RDS >> Mysql

PHP Select à partir de MySQL où le champ de date est de 7 jours dans le futur

Vous avez probablement défini expiry_date en tant que valeur datetime, ce qui signifie que vos comparaisons sont incorrectes. par exemple. vous devez utiliser

SELECT ... WHERE date(expiry_date) = date(now() + interval 7 day)

à la place (notez l'enveloppement du jour +7 dans un date() opération.

ex.

Étant donné une table avec une date et un champ datetime :

+------------+---------------------+
| d          | dt                  |
+------------+---------------------+
| 2013-06-28 | 2013-06-28 08:23:03 |
+------------+---------------------+

Remarquez comment la comparaison ressort :

mysql> select d=now(), d=date(now()), dt=now(), dt=date(now()), now() from x;
+---------+---------------+----------+----------------+---------------------+
| d=now() | d=date(now()) | dt=now() | dt=date(now()) | now()               |
+---------+---------------+----------+----------------+---------------------+
|       0 |             1 |        0 |              0 | 2013-06-28 08:26:20 |
+---------+---------------+----------+----------------+---------------------+
1 row in set (0.00 sec)

date contre datetime =false
date contre date =true
datetime contre datetime =false (hh:mm:ss ne correspond pas, donc pas égal)
datetime vs.s. date =false (la date est étendue à aaaa-mm-hh 00:00:00 et les hh:mm:ss ne correspondent pas