You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL日期类型转换报错(ERROR 1411):varchar转date失败求助

解决MySQL str_to_date转换报错1411的问题

这个错误的核心原因是你的orderdate字段中存在不符合%m/%d/%y格式的脏数据,比如错误信息里提到的'Order'字符串(大概率是导入数据时误把表头当成了数据行)。按以下步骤处理:

1. 定位脏数据

先查询出所有无法通过str_to_date转换的记录,确认异常值:

SELECT orderdate FROM january_2019 
WHERE str_to_date(orderdate, '%m/%d/%y') IS NULL;

2. 清理/修复脏数据

根据查询结果处理异常值:

  • 如果是表头类的无效值(比如'Order'),直接删除对应行:
    DELETE FROM january_2019 WHERE orderdate = 'Order';
    
  • 如果是其他格式错误的值,可选择更新为NULL或合法默认日期:
    UPDATE january_2019 
    SET orderdate = NULL 
    WHERE str_to_date(orderdate, '%m/%d/%y') IS NULL;
    

3. 安全执行字段转换

为避免直接修改原字段导致数据风险,推荐先新增date类型字段完成转换,再替换原字段:

  1. 添加新的date类型字段:
    ALTER TABLE january_2019 ADD COLUMN order_date DATE;
    
  2. 将原字段的有效日期数据转换到新字段:
    UPDATE january_2019 
    SET order_date = str_to_date(orderdate, '%m/%d/%y');
    
  3. 确认数据无误后,删除原字段并重命名新字段:
    ALTER TABLE january_2019 DROP COLUMN orderdate;
    ALTER TABLE january_2019 CHANGE COLUMN order_date orderdate DATE;
    

如果不需要保留原字段,也可以在清理脏数据后直接执行你最初的更新语句,再修改字段类型:

UPDATE january_2019 SET orderdate = str_to_date(orderdate,'%m/%d/%y');
ALTER TABLE january_2019 MODIFY COLUMN orderdate DATE;

内容的提问来源于stack exchange,提问作者Diajeng Wilutama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 23:12:22