Mysql
 sql >> Datenbank >  >> RDS >> Mysql

PHP Select aus MySQL, wobei das Datumsfeld 7 Tage in der Zukunft liegt

Sie haben wahrscheinlich expiry_date definiert als datetime-Wert, was bedeutet, dass Ihre Vergleiche falsch sind. z.B. müssen Sie verwenden

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

stattdessen (beachten Sie die Umhüllung des +7-Tages in einem date() Betrieb.

z. B.

Gegeben sei eine Tabelle mit einem Datums- und einem Datetime-Feld:

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

Beachten Sie, wie der Vergleich herauskommt:

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)

Datum vs. datetime =false
date vs. date =true
datetime vs. datetime =false (hh:mm:ss stimmt nicht überein, also nicht gleich)
datetime vs. date =false (Datum wird erweitert zu yyyy-mm-hh 00:00:00 und hh:mm:ss stimmen nicht überein