任何指针都会受到赞赏!我无法发现语法有什么问题,没有在SO上找到答案,所以我在这里发布我的问题。提前谢谢!
这是我试过的:
mysql> select DATE_ADD(start_date, INTERVAL 2 week), DATE_ADD(end_date,
INTERVAL 2 week) from lists where id=1;
+---------------------------------------+------------------------------
-------+
| DATE_ADD(start_date, INTERVAL 2 week) | DATE_ADD(end_date, INTERVAL 2
week) |
+---------------------------------------+------------------------------
-------+
| 2017-05-28 | 2017-06-11
|
+---------------------------------------+------------------------------
-------+
结果看起来正确。然后我试了一下:
mysql> update lists set start_date=DATE_ADD(start_date, INTERVAL 2 WEEK) and
end_date=DATE_ADD(end_date, INTERVAL 2 WEEK) where id=1;
ERROR 1292 (22007): Incorrect date value: '0' for column 'start_date' at row
1
对SO做了一些研究,有些答案指向严格的模式。但是为了触发严格模式错误,计算日期首先需要为0,我无法看到上述语法如何导致DATE_ADD这样做。
只是为了测试,我尝试了这个:
mysql> update ignore lists set start_date=DATE_ADD(start_date,
INTERVAL 2 week) and end_date=DATE_ADD(end_date, INTERVAL 2 week) where
id=1;
Query OK, 1 row affected, 1 warning (0.02 sec)
它给出了这个结果:
mysql> select start_date, end_date from lists where id=1;
+------------+------------+
| start_date | end_date |
+------------+------------+
| 0000-00-00 | 2017-05-28 |
+------------+------------+
如何???
提前再次感谢。
答案 0 :(得分:0)
糟糕!你有and
你应该有一个逗号。
update lists
set start_date=DATE_ADD(start_date, INTERVAL 2 WEEK),
end_date=DATE_ADD(end_date, INTERVAL 2 WEEK)
where id=1;
and
是一个返回0
或1
的布尔运算符。所以MySQL的解析器不会阻塞它,而是试图评估它。因此你的零。
我讨厌这种情况。