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

PostgreSQL计算周结束日期报错:timestamp无+double precision运算符

报错原因

ERROR: operator does not exist: timestamp without time zone + double precision
该报错的核心是extract(isodow from loads.ship_date)返回值为*双精度浮点数(double precision)*类型,PostgreSQL未内置timestamp类型与浮点数直接相加的运算规则,你需要将计算得到的天数差值转换为合法的运算类型再执行计算。

可用解决方案
  • 方案1:将天数差值转换为时间间隔类型运算,保留ship_date的时分秒信息:
loads.ship_date + ((6 - extract(isodow from loads.ship_date))::int || ' day')::interval

更规范的函数写法:

loads.ship_date + make_interval(days => (6 - extract(isodow from loads.ship_date))::int)
  • 方案2:先将timestamp转为date类型计算(自动舍弃时分秒),再转回timestamp,写法更简洁:
(loads.ship_date::date + (6 - extract(isodow from loads.ship_date))::int)::timestamp
效果验证

以你给出的2021年6月30日(周三,isodow返回值为3)为例:
计算逻辑:6 - 3 = 3,对应加3天,最终得到结果为2021-07-03,符合你预期的周六为周结束日期的规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 21:30:00