当我尝试运行以下查询时:
... WHERE `date` = DATE_ADD(NOW(), INTERVAL 10 HOUR)
它不起作用,所以我必须使用 $date = date("Y-m-d", strtotime('+10 hours'))
但为什么date_add不起作用?
非常感谢
请注意,DATE_ADD()除日期外,函数还会返回时间部分.这与使用php date("Y-m-d", strtotime('+10 hours'))只是一样,它只返回日期部分.
SELECT DATE_ADD(NOW(), INTERVAL 10 HOUR);
+-----------------------------------+
| DATE_ADD(NOW(), INTERVAL 10 HOUR) |
+-----------------------------------+
| 2010-11-05 01:59:51               |
+-----------------------------------+
1 row in set (0.00 sec)
你可以WHERE date = DATE(DATE_ADD(NOW(), INTERVAL 10 HOUR))改用:
SELECT DATE(DATE_ADD(NOW(), INTERVAL 10 HOUR));
+-----------------------------------------+
| DATE(DATE_ADD(NOW(), INTERVAL 10 HOUR)) |
+-----------------------------------------+
| 2010-11-05                              |
+-----------------------------------------+
1 row in set (0.02 sec)
测试用例:
CREATE TABLE tbl (id int, date datetime);
INSERT INTO tbl VALUES (1, '2010-11-04');
INSERT INTO tbl VALUES (2, '2010-11-05');
INSERT INTO tbl VALUES (3, '2010-11-06');
INSERT INTO tbl VALUES (4, '2010-11-07');
SELECT * FROM tbl WHERE date = DATE(DATE_ADD(NOW(), INTERVAL 10 HOUR));
+------+---------------------+
| id   | date                |
+------+---------------------+
|    2 | 2010-11-05 00:00:00 |
+------+---------------------+
1 row in set (0.00 sec)
| 归档时间: | 
 | 
| 查看次数: | 9229 次 | 
| 最近记录: |