PostgreSQL中将文本格式日期转换为YYYY-MM-DD格式日期的方法
在PostgreSQL中转换文本日期为YYYY-MM-DD日期类型的方法
针对你存储的1990-04-02T00:00:00.000这种标准ISO格式的文本日期,有几种简单高效的处理方式:
1. 查询时临时转换
方法一:直接强制转换(最简洁)
PostgreSQL能自动识别ISO 8601格式的时间字符串,直接将文本列转为DATE类型即可自动截断时间部分,得到YYYY-MM-DD格式的日期:
SELECT text_date::DATE AS formatted_date FROM your_table;
也可以用等价的CAST语法:
SELECT CAST(text_date AS DATE) AS formatted_date FROM your_table;
方法二:指定格式转换(适配非标准场景)
如果遇到格式不那么标准的文本日期,可通过TO_TIMESTAMP指定解析规则后转日期:
SELECT TO_TIMESTAMP(text_date, 'YYYY-MM-DD"T"HH24:MI:SS.MS')::DATE AS formatted_date FROM your_table;
其中"T"用于匹配字符串中的固定字符T,MS匹配毫秒部分,格式规则可根据实际情况调整。
处理脏数据(避免转换报错)
若数据中存在不符合格式的字符串,使用TRY_CAST会返回NULL而非直接抛出错误:
SELECT TRY_CAST(text_date AS DATE) AS formatted_date FROM your_table;
2. 修改原表列类型(永久转换)
如果需要将原表的文本列直接改为DATE类型,执行以下ALTER TABLE语句:
ALTER TABLE your_table ALTER COLUMN text_date TYPE DATE USING text_date::DATE;
内容的提问来源于stack exchange,提问作者Coderman
相关产品推荐
相关产品推荐

