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

SQL中如何将列的日期格式从dd.mm.yyyy转换为yyyy-mm-dd

不同场景下的日期格式转换方案

Python 原生场景

直接处理单条字符串日期时可选以下两种方案:

  • 字符串拆分法(仅适用于格式完全固定、所有日期均为两位日/月的场景)
date_str = "12.05.2021"
day, month, year = date_str.split(".")
new_date = f"{year}-{month}-{day}"
# 输出:2021-05-12
  • datetime模块转换(支持格式校验、适配单数字日/月,更稳定)
from datetime import datetime
date_str = "12.05.2021"
# 按dd.mm.yyyy格式解析为日期对象
date_obj = datetime.strptime(date_str, "%d.%m.%Y")
# 格式化为yyyy-mm-dd字符串
new_date = date_obj.strftime("%Y-%m-%d")
# 输出:2021-05-12

Pandas 整列处理场景

针对DataFrame中的整列日期数据,批量转换写法如下:

import pandas as pd
# 替换date_col为你的原始日期列名,new_date_col为转换后的列名
df["new_date_col"] = pd.to_datetime(df["date_col"], format="%d.%m.%Y").dt.strftime("%Y-%m-%d")
# 若需要日期类型而非字符串,去掉.dt.strftime部分即可,得到的是pandas datetime64类型

SQL 场景

不同数据库语法略有差异,常见数据库写法如下:

  • MySQL
-- 替换your_table为表名,old_date为原始日期字段名
SELECT DATE_FORMAT(STR_TO_DATE(old_date, '%d.%m.%Y'), '%Y-%m-%d') AS new_date FROM your_table;
  • PostgreSQL
-- 替换your_table为表名,old_date为原始日期字段名
SELECT TO_CHAR(TO_DATE(old_date, 'DD.MM.YYYY'), 'YYYY-MM-DD') AS new_date FROM your_table;

Excel 场景

  • 若原始日期为字符串格式:假设数据在A1单元格,输入公式
=TEXT(DATE(RIGHT(A1,4),MID(A1,4,2),LEFT(A1,2)),"yyyy-mm-dd")
  • 若原始日期已被Excel识别为日期类型:直接选中列,修改单元格格式为yyyy-mm-dd即可。

注意:如果原始日期存在单数字的日/月(如5.3.2021代表2021年3月5日),优先使用各工具的内置日期解析方法,不要用简单的字符串拆分,避免位置匹配错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:15:03