MySQL Error 1411排查:STR_TO_DATE转换日期UPDATE语句报错
问题解决:MySQL UPDATE时触发1411错误的原因与修复
这个错误的核心原因是你的example_table里存在脏数据——有一行的date字段值是字符串'date',STR_TO_DATE函数无法用%m/%d/%Y格式解析这个值,从而触发报错。
为什么SELECT时能正常返回结果?因为你执行SELECT时只查询到了格式合法的行(比如7/25/2022),没碰到这条脏数据;但UPDATE操作会遍历表中所有行,处理到这条脏数据时就触发了1411错误。
解决步骤:
定位脏数据
可以用以下语句找出所有无法被正确解析的行:SELECT `date` FROM example_table WHERE STR_TO_DATE(`date`, '%m/%d/%Y') IS NULL;或者直接精准查找值为
'date'的行:SELECT * FROM example_table WHERE `date` = 'date';处理脏数据
根据实际业务需求处理这些脏数据,比如删除误输入的表头行:DELETE FROM example_table WHERE `date` = 'date';也可以将其修正为合法的日期格式值。
重新执行UPDATE
处理完脏数据后,再次执行你的UPDATE语句即可完成日期格式转换:UPDATE example_table SET `date` = STR_TO_DATE(`date`, '%m/%d/%Y');
内容的提问来源于stack exchange,提问作者David Welsh
相关产品推荐
相关产品推荐

