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-05 | 05-11-2020 |
| 05-12-2020 | 05-12-2020 |
| 2019-08-07 | 07-08-2019 |
| 20/04/2018 | 20-04-2018 |
| 01-07-2020 | 01-07-2020 |
| 13-05-2019 | 13-05-2019 |
| 11-25-2020 | 25-11-2020 |
方案2:Excel(适合小规模数据集,无需写代码)
- 选中需要转换的日期列,点击「数据」选项卡 → 「从表格/区域」进入Power Query编辑器
- 选中目标列,点击「转换」选项卡 → 「数据类型」 → 「日期」,工具会自动识别绝大多数日期格式
- 再次选中列,点击「转换」→ 「格式」→ 「自定义格式」,输入
dd-mm-yyyy确认 - 关闭Power Query编辑器,选择保存更改并上载到表格即可,识别失败的单元格会显示错误,手动调整即可。
内容的提问来源于stack exchange,提问作者lemonadecandy
相关产品推荐
相关产品推荐

