Pravděpodobně jste definovali expiry_date
jako hodnotu datetime, což znamená, že vaše srovnání jsou nesprávná. např. musíte použít
SELECT ... WHERE date(expiry_date) = date(now() + interval 7 day)
místo toho (všimněte si zabalení dne +7 do date()
operace.
např.
Je dána tabulka s datem a polem datetime:
+------------+---------------------+
| d | dt |
+------------+---------------------+
| 2013-06-28 | 2013-06-28 08:23:03 |
+------------+---------------------+
Všimněte si, jak to srovnání dopadne:
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 v.s. datetime =nepravda
datum v.s datum =pravda
datetime v.s. datetime =false (hh:mm:ss se neshoduje, takže se nerovná)
datetime v.s. datum =false (datum je rozšířeno na rrrr-mm-hh 00:00:00 a hh:mm:ss se neshodují