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
相关产品推荐
相关产品推荐

