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

PostgreSQL中time类型为何不显示毫秒?precision参数解析

PostgreSQL time类型显示与精度问题解析

为什么默认不显示毫秒/微秒?

PostgreSQL客户端默认输出格式会自动省略time类型值尾部的零值小数部分——不是没存储,只是没显示。比如实际值是10:23:00.123456时,客户端会完整显示;如果小数部分全为0,就会简化成10:23:00。

time(n)精度参数的作用

time(n)里的n是用来指定秒的小数部分存储精度,范围0到6:

  • n=0:仅存储时、分、秒,无小数部分
  • n=3:存储到毫秒(千分之一秒)
  • n=6:存储到微秒(百万分之一秒)
    这个参数是限制存储的精度,而非控制显示。比如定义字段为time(3)时,插入的微秒值会被截断到毫秒位,确保存储精度符合设定要求。

如何强制显示毫秒/微秒?

如果需要强制显示小数部分(包括尾部的零),可以用to_char()函数格式化输出:

select to_char(now()::time(6), 'HH24:MI:SS.US');

这样即使小数部分全是0,也会显示为10:23:00.000000。

你执行select now()::time(6)返回10:23:00,大概率是因为执行语句时now()的秒小数部分刚好为0,或是客户端默认格式隐藏了零值小数。换个时间点测试,或是用上面的格式化语句就能验证实际存储的精度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 05:30:44