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

CockroachDB v20.1.1版本日期差值计算异常问题咨询

问题原因
  • 该异常不是操作错误导致,是CockroachDB v20.1.1版本自带的已知日期计算bug,根因是该版本对跨闰年的interval类型计算逻辑存在处理缺陷,仅在v20.1.0、v20.1.1两个小版本中存在。
  • 你给出的两个测试语句语法完全符合规范,触发的是旧版本的原生问题。
解决建议
  • 最彻底的方案是将CockroachDB集群升级到v20.1.2及以上的稳定补丁版本,或升级到v20.2+正式版本,官方已在这些版本中修复了该计算缺陷,升级后原有语句可直接返回正确结果。
  • 若暂时无法完成版本升级,可以使用以下替代写法规避bug:
    1. 使用make_date函数手动构造偏移后的日期,避免直接和interval做运算:
    select make_date(
      extract(year from '2021-10-29'::date)::int - 1,
      extract(month from '2021-10-29'::date)::int,
      extract(day from '2021-10-29'::date)::int
    );
    
    1. 调整区间计算逻辑,拆分为年份偏移+日期偏移两步计算:
    select date_trunc('year', '2021-10-29'::date) - interval '1 year' 
    + ('2021-10-29'::date - date_trunc('year', '2021-10-29'::date));
    
  • 建议统一使用interval '1 year'的单数写法,虽然部分版本对复数years做了兼容,但单数是SQL标准规范写法,可避免额外的解析异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:57:03