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

MySQL如何将包含多种格式的文本日期列转换为标准DD-MM-YYYY格式

首先注意:存在歧义日期无法自动识别,例如04/05/2023按DD/MM/YYYY规则是4月5日,按MM/DD/YYYY规则是5月4日,这类情况需要你结合数据集的业务场景自行调整转换规则的优先级。

方案1:Python(适合大规模数据集,灵活可控)

依赖安装

执行命令安装需要的工具包:
pip install pandas python-dateutil

转换代码

import pandas as pd
from datetime import datetime
from dateutil.parser import parse

def standardize_date(date_str):
    date_str = date_str.strip()
    try:
        # 处理斜杠分隔的日期
        if "/" in date_str:
            parts = date_str.split("/")
            if len(parts) == 3:
                # 优先匹配DD/MM/YYYY
                if len(parts[2]) == 4 and int(parts[0]) <= 31 and int(parts[1]) <= 12:
                    return datetime.strptime(date_str, "%d/%m/%Y").strftime("%d-%m-%Y")
                # 再匹配MM/DD/YYYY
                elif len(parts[2]) == 4 and int(parts[1]) <= 31 and int(parts[0]) <= 12:
                    return datetime.strptime(date_str, "%m/%d/%Y").strftime("%d-%m-%Y")
        # 处理横杠分隔的日期
        elif "-" in date_str:
            parts = date_str.split("-")
            if len(parts) == 3:
                # 匹配YYYY-MM-DD
                if len(parts[0]) == 4:
                    return datetime.strptime(date_str, "%Y-%m-%d").strftime("%d-%m-%Y")
                # 匹配DD-MM-YY
                elif len(parts[2]) == 2 and int(parts[0]) <= 31 and int(parts[1]) <= 12:
                    return datetime.strptime(date_str, "%d-%m-%y").strftime("%d-%m-%Y")
                # 匹配MM-DD-YYYY
                elif len(parts[2]) == 4 and int(parts[1]) <= 31 and int(parts[0]) <= 12:
                    return datetime.strptime(date_str, "%m-%d-%Y").strftime("%d-%m-%Y")
                # 匹配DD-MM-YYYY
                elif len(parts[2]) == 4 and int(parts[0]) <= 31 and int(parts[1]) <= 12:
                    return datetime.strptime(date_str, "%d-%m-%Y").strftime("%d-%m-%Y")
        # 兜底识别
        return parse(date_str, fuzzy=True).strftime("%d-%m-%Y")
    except:
        # 转换失败返回原值方便排查
        return date_str

# 批量处理数据集示例
# 读取数据
df = pd.read_csv("你的数据集路径.csv")
# 转换两列日期
df["起始日期_标准"] = df["起始日期"].apply(standardize_date)
df["结束日期_标准"] = df["结束日期"].apply(standardize_date)
# 导出结果
df.to_csv("转换完成的数据集.csv", index=False)

样例转换结果

原始值转换为DD-MM-YYYY格式
2020-11-0505-11-2020
05-12-202005-12-2020
2019-08-0707-08-2019
20/04/201820-04-2018
01-07-202001-07-2020
13-05-201913-05-2019
11-25-202025-11-2020

方案2:Excel(适合小规模数据集,无需写代码)

  1. 选中需要转换的日期列,点击「数据」选项卡 → 「从表格/区域」进入Power Query编辑器
  2. 选中目标列,点击「转换」选项卡 → 「数据类型」 → 「日期」,工具会自动识别绝大多数日期格式
  3. 再次选中列,点击「转换」→ 「格式」→ 「自定义格式」,输入dd-mm-yyyy确认
  4. 关闭Power Query编辑器,选择保存更改并上载到表格即可,识别失败的单元格会显示错误,手动调整即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:18:03