sql >> Base de Datos >  >> RDS >> Mysql

PHP Seleccione de MySQL donde el campo de fecha es 7 días en el futuro

Probablemente haya definido expiry_date como un valor de fecha y hora, lo que significa que sus comparaciones son incorrectas. p.ej. necesitas usar

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

en su lugar (tenga en cuenta el envoltorio del día +7 en un date() operación.

por ejemplo

Dada una tabla con una fecha y un campo de fecha y hora:

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

Fíjate cómo sale la comparación:

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)

fecha vs. fechahora =falso
fecha frente a fecha =verdadero
fechahora frente a datetime =false (hh:mm:ss no coincide, por lo que no es igual)
datetime vs.s. date =false (la fecha se expande a aaaa-mm-hh 00:00:00 y hh:mm:ss no coincide