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
相关产品推荐
相关产品推荐

