必须在导入向导第三步“字段映射”中点击Options→勾选Use custom date format并填写对应格式(如%Y-%m-%d),同时确保Excel源列为纯文本日期、避免空值触发NOT NULL错误。
日期列被识别为文本或报Invalid Date Format怎么办
navicat 不会自动推断 excel 里的日期字符串格式,哪怕你看到的是 2025-03-18 或 18/03/2025,它默认当作普通文本处理——直到你明确告诉它怎么拆解。错误提示 invalid date format 的本质是解析失败,不是数据“写错了”。
- 必须在导入向导第三步「字段映射」页面操作:点击右下角
Options→ 勾选Use custom date format→ 在输入框填入对应格式,例如:%Y-%m-%d、%d/%m/%Y、%Y年%m月%d日 - Excel 源列不能是“Excel 日期序列值”(比如底层是数字
45722),否则 Navicat 直接读到数字,根本不会走日期解析逻辑 - 解决办法:选中该列 → 右键「设置单元格格式」→ 改为「文本」→ 再用公式
=TEXT(A1,"yyyy-mm-dd")转成标准字符串;或复制粘贴进记事本再复制回来,强制剥离格式
为什么改全局首选项里的日期格式没用
全局首选项中的 Date Format 只控制 Navicat 界面里日期字段的显示样式,不影响导入时对源数据的解析逻辑。导入阶段的格式识别完全独立,且只发生在字段映射环节。
- 所有日期格式适配必须前置完成:要么清洗 Excel 数据为统一文本格式,要么在导入向导里手动指定
custom date format -
STR_TO_DATE()、DATE_FORMAT()这类 MySQL 函数在 Navicat 导入流程中不生效——导入不是执行 SQL,而是客户端解析后批量插入 - 如果一列混了多种格式(如部分
2025-03-18,部分18-03-2025),Navicat 无法兼容,必须先用 Excel 或脚本清洗干净
字段映射时日期类型怎么设才有效
仅设置目标字段为 DATE 或 DATETIME 类型还不够,必须配合自定义格式才能让 Navicat 正确转换字符串。
- 勾选「使用第一行作为字段名」,否则 Navicat 不识别表头,列顺序错位会导致日期列被映射到非日期字段
- 在字段映射界面,拖拽 Excel 列(如「下单日期」)到数据库字段(如
order_time)后,点击该映射项右侧的...→ 进入「数据类型转换」→ 类型选DATE,并确保下方Use custom date format已启用且格式匹配 - 若目标字段定义为
DATE NOT NULL,而 Excel 中该列存在空单元格(哪怕只是""),Navicat 会尝试插NULL并触发约束报错,错误信息仍显示为Invalid Date Format——实际是空值问题
跳过日期解析失败的行要怎么配置
Navicat 没有 continue 语句,但可通过导入向导的两个勾选项实现“跳过当前错误行并继续”。注意:这只对解析类错误生效,不适用于数据库约束错误。
- 在导入向导第三步「高级」页,必须同时勾选:
跳过错误的记录和继续导入其余记录;只选其一,导入仍会在首个错误处中断 - 适用场景:日期格式错、文本往
INT字段插、数字超长等客户端解析失败;不适用主键冲突、NOT NULL违例、外键不匹配等服务端约束错误 - 启用后,日志底部会出现类似
Skipped 3 records due to errors的提示,说明机制已生效











