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

MySQL中如何将CSV的'1/1/2020'格式日期正确导入DATE类型列

解决MySQL LOAD DATA导入CSV日期格式转换问题

你的核心问题是LOAD DATA语句中使用了错误的日期格式符,导致CSV里的1/5/2020(月/日/年,无前置零)无法正确转换为MySQL DATE类型,进而出现0000-00-00或空值。

错误原因

你当前的SET bank_date = str_to_date(bank_date,'%Y-%m-%d')写法中,%Y-%m-%d是MySQL标准日期格式的匹配符,但CSV的日期格式是%c/%e/%Y(无前导零的月/无前导零的日/四位年),格式不匹配导致转换失败。此外,直接将CSV字符串导入DATE类型字段时,MySQL会先尝试自动转换,失败后就会存入0000-00-00,后续的SET操作无法修正这个问题。

正确解决方案

使用用户临时变量接收CSV中的原始日期字符串,再通过STR_TO_DATE用正确的格式符转换后赋值给DATE类型字段,全程无需修改原始CSV或创建冗余列:

USE database_name;
LOAD DATA LOCAL INFILE 'C:/Users/Shelly/Desktop/Date Import.csv'
INTO TABLE bank_table
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 ROWS
(@temp_date, bank_amount)  -- 用@temp_date临时存储CSV的日期字符串
SET bank_date = STR_TO_DATE(@temp_date, '%c/%e/%Y');  -- 转换为合法DATE值

格式符说明

  • %c:匹配无前导零的月份(1-12),对应CSV中的1或12
  • %e:匹配无前导零的日期(1-31),对应CSV中的5或28
  • %Y:匹配四位数字的年份,对应CSV中的2020

这个方法完全符合要求:直接在导入过程完成转换,不修改原始CSV,也不会产生冗余数据。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:15:26