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

如何提取PostgreSQL中无时区时间戳(timestamp without time zone)列的日期部分

解决方案:提取PostgreSQL timestamp列的日期部分

快速解决方法

有两种常用方式能满足你的需求,你可以根据想要的结果类型来选:

  1. 转换为原生date类型
    如果只需要日期的底层类型(不是格式化后的字符串),直接用类型转换是最高效的方式:

    select "columnWithoutTimeZone"::date from my_table;
    

    执行后会返回2022-06-11这样的标准date值,后续如果需要调整格式,还能再做二次处理。

  2. 直接输出目标格式的字符串
    要是想直接得到Jun 11, 2022这种格式的结果,用to_char()函数就可以,它支持直接对timestamp类型进行格式化:

    select to_char("columnWithoutTimeZone", 'Mon DD, YYYY') from my_table;
    

    这条语句会直接输出你想要的日期样式。

为什么to_date()会报错?

你碰到的ERROR: function to_date(timestamp without time zone) does not exist错误,核心原因是to_date()的设计定位是把字符串解析成日期,它要求第一个参数必须是text类型。而你的列是timestamp without time zone类型,PostgreSQL没有对应这个参数类型的to_date函数重载,自然就匹配不到合适的执行逻辑了。

简单说就是:to_date()是「字符串转日期」的工具,但你需要的是「日期时间转日期/日期字符串」,用错工具啦~


内容的提问来源于stack exchange,提问作者Ramón J Romero y Vigil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 01:12:46