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

MySQL中如何将DD/MM/YYYY格式文本转换为YYYY-MM-DD日期格式

解决方案

步骤1:新增存储标准格式日期的列

优先新增独立列不修改原有列,既不影响历史数据,也能适配后续持续导入非标准格式CSV的需求。
通用新增列语法如下:

ALTER TABLE 你的表名
ADD COLUMN 标准日期列 DATE;

如果你的数据库场景更适合存字符串格式的日期,可以把列类型换成CHAR(10),优先推荐用DATE类型方便后续做日期计算、筛选等操作

注意:执行全表更新操作前,建议先备份整张表,避免转换异常导致数据丢失。

步骤2:批量转换历史数据填充新列

根据你使用的数据库类型选择对应转换语法:

  • MySQL / MariaDB 环境
    用STR_TO_DATE函数匹配DD/MM/YYYY格式完成转换:
UPDATE 你的表名
SET 标准日期列 = STR_TO_DATE(原有非标准日期文本列, '%d/%m/%Y');

如果新列是字符串类型,额外加一层DATE_FORMAT输出指定格式:

UPDATE 你的表名
SET 标准日期字符串列 = DATE_FORMAT(STR_TO_DATE(原有非标准日期文本列, '%d/%m/%Y'), '%Y-%m-%d');
  • PostgreSQL 环境
    用TO_DATE函数转换:
UPDATE 你的表名
SET 标准日期列 = TO_DATE(原有非标准日期文本列, 'DD/MM/YYYY');

存字符串的话用TO_CHAR格式化输出:

UPDATE 你的表名
SET 标准日期字符串列 = TO_CHAR(TO_DATE(原有非标准日期文本列, 'DD/MM/YYYY'), 'YYYY-MM-DD');
  • SQL Server 环境
    用CONVERT函数,格式码103对应DD/MM/YYYY输入格式:
UPDATE 你的表名
SET 标准日期列 = CONVERT(DATE, 原有非标准日期文本列, 103);

存字符串的话用格式码23输出YYYY-MM-DD格式:

UPDATE 你的表名
SET 标准日期字符串列 = CONVERT(VARCHAR(10), CONVERT(DATE, 原有非标准日期文本列, 103), 23);

步骤3:后续导入新CSV时自动处理

不用每次导入后手动执行更新,可以在导入阶段直接完成转换,以MySQL LOAD DATA导入为例:

LOAD DATA INFILE '你的CSV文件本地路径'
INTO TABLE 你的表名
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS -- 忽略CSV表头行,没有表头可以删掉这行
(@temp_date, 其他列1, 其他列2) -- 把CSV里的非标准日期先读到临时变量
SET 原有非标准日期文本列 = @temp_date,
    标准日期列 = STR_TO_DATE(@temp_date, '%d/%m/%Y');

可选校验步骤

可以查询转换失败的脏数据,手动修正异常值:

-- MySQL环境示例,其他数据库可以替换为对应转换函数判断空值
SELECT * FROM 你的表名
WHERE STR_TO_DATE(原有非标准日期文本列, '%d/%m/%Y') IS NULL
AND 原有非标准日期文本列 IS NOT NULL;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:45:04