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

PostgreSQL如何解析带微秒的ISO timestamp不丢失时间精度?

问题原因

你现有的写法出错是因为格式模板中的字面量字符T和Z没有用双引号包裹,PostgreSQL解析格式串时会误判这两个字符的定位,导致微秒部分没有被正确匹配,最终出现精度丢失。

解决方法

方法1:修正格式串写法

将格式模板里的固定字面量T和Z用双引号包裹即可,正确SQL如下:

select to_timestamp('2021-08-29T16:32:25.336239Z','yyyy-mm-dd"T"hh24:mi:ss.us"Z"');

解析后得到的timestamp会完整保留6位微秒精度。

方法2:直接做类型转换(更推荐)

PostgreSQL原生支持ISO 8601格式的时间字符串,不需要手动指定格式模板,直接强制转换即可:

select '2021-08-29T16:32:25.336239Z'::timestamptz;

该写法更简洁,也不会出现格式匹配错误导致的精度问题。

常见显示问题排查

如果执行正确语句后,返回结果仍然看不到微秒,属于数据库客户端的默认显示配置问题,并非数据本身精度丢失。可以用以下语句验证微秒是否正确存储:

select extract(microseconds from '2021-08-29T16:32:25.336239Z'::timestamptz);

返回结果会包含336239,即可证明微秒精度完整保留。


内容的提问来源于stack exchange,提问作者nagy.zsolt.hun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:57:03