MySQL 8更新语句报#1292警告:日期值截断,数据未修改求助
问题原因及解决方法
原因分析
你的UPDATE语句存在语法错误:在SET子句中同时更新多个字段时,应该用逗号分隔不同的赋值操作,你误用了AND。
MySQL会把start_date = '2007-04-09' AND eligibility = 1整体当作一个布尔表达式计算:由于AND是逻辑运算符,需要两边为布尔/数值类型,MySQL会尝试将字符串'2007-04-09'转为数值,这个转换过程就触发了Truncated incorrect DOUBLE value警告。最终这个表达式的计算结果会被赋值给start_date,显然这不是你期望的日期值,所以目标数据行没有被正确修改。
解决方法
将SET子句中的AND替换为逗号,正确的SQL语句如下:
UPDATE `users` SET `start_date` = '2007-04-09', `eligibility` = 1 WHERE `user_id` = 36;
执行修改后的语句,就能正常同时更新start_date和eligibility两个字段,不会再触发警告。
内容的提问来源于stack exchange,提问作者EastsideDev
相关产品推荐
相关产品推荐

