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

PostgreSQL中date_part计算超1年日期间隔时返回错误结果

日期差值计算错误修复方案

错误原因

你当前使用的date_part('day', 日期)函数仅会提取日期参数中当月的天数值,不会统计跨月、跨年的累计天数差。你测试用例中2020-06-12提取的day值为12,2008-02-18提取的day值为18,12-18自然返回-6的错误结果。

修复后的查询语句

PostgreSQL 环境

直接对date类型值做减法即可得到正确的总天数差:

select 
   valid_from
   ,valid_to
   ,valid_to::date - valid_from::date as date_diff
from bp_ips;

SQL Server 环境

使用DATEDIFF函数实现:

select 
   valid_from
   ,valid_to
   ,DATEDIFF(day, valid_from, valid_to) as date_diff
from bp_ips;

结果验证

用你提供的测试用例计算:2008-02-18到2020-06-12的正确天数差为4503天,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:09:02