Bạn có thể đã xác định expiry_date
dưới dạng giá trị ngày giờ, có nghĩa là các so sánh của bạn không chính xác. ví dụ. bạn cần sử dụng
SELECT ... WHERE date(expiry_date) = date(now() + interval 7 day)
thay vào đó (lưu ý gói +7 ngày trong một date()
hoạt động.
ví dụ:
Cho một bảng có ngày và trường ngày giờ:
+------------+---------------------+
| d | dt |
+------------+---------------------+
| 2013-06-28 | 2013-06-28 08:23:03 |
+------------+---------------------+
Lưu ý cách so sánh xuất hiệ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)
ngày v.s. datetime =false
date v.s date =true
datetime v.s. datetime =false (hh:mm:ss không khớp, vì vậy không bằng nhau)
datetime v.s. date =false (ngày được mở rộng thành yyyy-mm-hh 00:00:00 và hh:mm:ss không khớp