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

PostgreSQL 9.6:去除Unix时间戳转换后及timestamp列的秒小数部分

PostgreSQL 9.6.20 时间处理解决方案

处理to_timestamp的输出结果

执行select to_timestamp(1476544839);会返回带时区且包含秒小数的时间,要得到不带时区、无秒小数的结果,有两种常用方法:

方法1:date_trunc截断+类型转换

直接截断到整秒,再转换为不带时区的timestamp类型:

SELECT date_trunc('second', to_timestamp(1476544839))::timestamp;

date_trunc('second', ...)会砍掉秒的小数部分,::timestamp把带时区的timestamptz转成不带时区的timestamp,完全符合预期。

方法2:to_char格式化+类型转换

先把时间格式化为无小数的字符串,再转回timestamp:

SELECT to_char(to_timestamp(1476544839), 'YYYY-MM-DD HH24:MI:SS')::timestamp;

这种方式可以自定义输出格式,灵活性更高。

处理表中timestamptz列的查询结果

针对my_table里类型为timestamp with time zone的timestamp列,要去掉秒小数部分,可参考以下写法:

保留timestamp类型(不带时区)

SELECT date_trunc('second', "timestamp")::timestamp FROM my_table;

保留timestamptz类型(仅去掉秒小数)

如果不需要转换时区类型,只是去掉秒的小数部分:

SELECT date_trunc('second', "timestamp") FROM my_table;

输出为格式化字符串

如果只需要字符串格式的结果:

SELECT to_char("timestamp", 'YYYY-MM-DD HH24:MI:SS') FROM my_table;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 08:40:32