PostgreSQL中如何将Timestamp without Time Zone转换为简易日期?
问题分析与解决
你的操作没有将日期类型转换成指定格式的字符串,只是完成了timestamp到date的类型转换——但PostgreSQL会按默认格式展示date类型数据,所以你看到输出没变化。
核心问题
timestamp_date::date 和 DATE(timestamp_date) 仅改变了数据的存储类型,并没有修改其显示格式。你觉得"输出没变化",本质是客户端工具仍用默认规则展示日期类型,而非转换操作失效。
正确解法
要得到DD/MM/YYYY格式的结果,需要用TO_CHAR()函数对日期进行格式化:
SELECT TO_CHAR(timestamp_date, 'DD/MM/YYYY') AS formatted_date FROM my_schema.my_table;
特殊情况补充
如果你的列实际存储的是字符串类型(而非真正的timestamp without time zone),需要先把字符串转成timestamp,再格式化:
SELECT TO_CHAR(TO_TIMESTAMP(timestamp_date, 'Dy Mon DD YYYY HH24:MI:SS "GMT"Z "(Coordinated Universal Time)"'), 'DD/MM/YYYY') AS formatted_date FROM my_schema.my_table;
注意格式模板要和你存储的字符串样式完全匹配,才能确保转换成功。
内容的提问来源于stack exchange,提问作者gwydion93
相关产品推荐
相关产品推荐

