MySQL date_add() 在 WHERE 子句中不起作用?

标签 mysql phpmyadmin

当我尝试运行以下查询时:

... 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)

关于MySQL date_add() 在 WHERE 子句中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4098539/

相关文章:

python - sql查询中变量的循环压缩列表

javascript - node.js 从 mysql 堆栈中选择数据

mysql - 将 phpmyadmin 数据库中的 http 替换为 https

mysql - 获取列中具有连续数字的唯一 ID 列表

php - 查询 php 分页 jquery

php - Wordpress 添加评论栏并保存自定义数据

php - Mysql查询 - 增加值大于X但小于Y的值

PHP MIDI 生成器

php - 提交表格。使用php将信息存储在数据库中

mysql - 外键约束和桥接表