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

PostgreSQL间隔类型运算行为确认请求

PostgreSQL间隔运算与PGInterval类行为解析

一、PostgreSQL间隔加法的行为逻辑

你观察到的两个运算结果完全符合PostgreSQL的设计规则:

  • PT55M + PT10M得到PT1H5M:分钟到小时是固定60进制转换,不存在任何歧义,因此PostgreSQL会自动完成进位转换。
  • PT23H + PT2H得到PT25H:小时到天的转换必须依赖基准日期——比如夏令时切换区域的一天可能是23或25小时,没有基准日期的话,无法可靠确定25小时对应的天数,因此PostgreSQL不会自动将小时进位为天,避免逻辑歧义。

针对你提出的确认点:仅使用时分秒(HMS)间隔做运算时,结果绝不会出现天数。因为没有基准日期作为参考,PostgreSQL不会执行小时到天的转换,所有小时累加结果都会以小时单位保留。

二、Java PGInterval类的行为说明

PGInterval类的核心定位是用于PostgreSQL数据库的间隔数据读写交互,它的设计目标是准确映射数据库中间隔类型的存储结构,而非复刻数据库的运算逻辑。因此它做加法时只是简单累加对应字段的原始值(比如55分钟+10分钟直接存为65分钟),不会像数据库那样进行单位进位。

这不属于Bug,是类的设计目标决定的。如果需要和PostgreSQL数据库一致的间隔运算逻辑,建议:

  • 将间隔数据传入PostgreSQL中执行运算后再取回结果
  • 自行实现符合PostgreSQL规则的单位进位逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:54:56