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

如何将TEXT类型的DOB列从Jan 30,2000格式转为30-01-2000?

将"Jan 30,2000"格式的TEXT日期转换为"30-01-2000"格式

你之前直接用date_format失败的核心原因是:原列是TEXT类型,必须先把字符串解析为日期类型,再进行格式化输出。以下是针对两种常用工具的解决方案:

方案1:使用Pandas(Kaggle常用环境)

Kaggle数据集通常用Python Pandas处理,步骤分为解析日期和格式化输出两步:

import pandas as pd

# 读取数据集(示例为CSV格式,根据实际文件类型调整)
df = pd.read_csv('your_kaggle_dataset.csv')

# 第一步:将TEXT类型的DOB列解析为datetime对象
# %b 匹配英文月份缩写(如Jan、Feb),%d 匹配两位日期,%Y 匹配四位年份
df['DOB'] = pd.to_datetime(df['DOB'], format='%b %d,%Y')

# 第二步:格式化为目标字符串格式(30-01-2000)
df['DOB_formatted'] = df['DOB'].dt.strftime('%d-%m-%Y')

方案2:使用SQL(如MySQL)

如果用SQL处理数据集,需要先用STR_TO_DATE将字符串转为日期类型,再用DATE_FORMAT格式化:

查询转换结果

SELECT DATE_FORMAT(STR_TO_DATE(DOB, '%b %d,%Y'), '%d-%m-%Y') AS DOB_formatted
FROM your_table_name;

新增列并存储转换结果

-- 先新增用于存储结果的列
ALTER TABLE your_table_name ADD COLUMN DOB_formatted VARCHAR(10);
-- 更新列值完成转换
UPDATE your_table_name SET DOB_formatted = DATE_FORMAT(STR_TO_DATE(DOB, '%b %d,%Y'), '%d-%m-%Y');

关键说明

  • %b是匹配英文月份缩写的格式符,必须和原数据的月份格式完全对应;
  • 只有先完成字符串→日期类型的转换,date_format才能识别内容为有效日期,否则会返回空值或报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:13:21