おそらくexpiry_date
を定義しました 日時値として。これは、比較が正しくないことを意味します。例えば使用する必要があります
SELECT ... WHERE date(expiry_date) = date(now() + interval 7 day)
代わりに(date()
の+7日のラッピングに注意してください 操作。
例:
日付と日時フィールドを持つテーブルがある場合:
+------------+---------------------+
| d | dt |
+------------+---------------------+
| 2013-06-28 | 2013-06-28 08:23:03 |
+------------+---------------------+
比較がどのように行われるかに注目してください:
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)
日付v.s. datetime =false
date v.s date =true
datetime v.s. datetime =false(hh:mm:ssが一致しないため、等しくない)
datetime v.s. date =false(dateはyyyy-mm-hh 00:00:00に展開され、hh:mm:ssは一致しません