Prawdopodobnie zdefiniowałeś expiry_date
jako wartość daty i godziny, co oznacza, że porównania są nieprawidłowe. np. musisz użyć
SELECT ... WHERE date(expiry_date) = date(now() + interval 7 day)
zamiast tego (zwróć uwagę na opakowanie dnia +7 w date()
operacja.
np.
Biorąc pod uwagę tabelę z datą i polem daty i godziny:
+------------+---------------------+
| d | dt |
+------------+---------------------+
| 2013-06-28 | 2013-06-28 08:23:03 |
+------------+---------------------+
Zwróć uwagę, jak wypada porównanie:
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)
data vs. datetime =false
data vs.s data =true
datetime vs. datetime =false (hh:mm:ss nie pasuje, więc nie jest równe)
datetime vs. date =false (data jest rozwijana do rrrr-mm-gg 00:00:00, a gg:mm:ss nie pasują do siebie