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

闰年场景下日期差计算的SQL报表问题排查与修正

问题修正:SQL报表月份计算闰年误差问题

原代码靠总天数除以30取整的方式算月份数,这种方法不管不同月份的天数差异和闰年影响,导致整周期的月份计算出错(比如2020-06-01到2023-05-31实际是36个月,原代码算出37个月)。

以下是保留原代码结构的修正版本:

select case 
    when ('01/06/2020' ='' AND '31/05/2023' ='') 
    then 'N/A'
    else
    '01/06/2020' + ' to ' + '31/05/2023' + ' (' + 
    cast(
        datediff(month, convert(datetime,'01/06/2020',103), dateadd(day, 1, convert(datetime,'31/05/2023',103))
    ) AS varchar) + ' months )' end

修正说明:

  • 替换了原有的round(datediff(d,...)/30.0,0)计算逻辑,改用datediff(month, 开始日期, 结束日期+1天)的方式:
    • SQL Server的datediff(month)会计算两个日期之间跨越的月份边界数,当结束日期是当月最后一天时,加1天到下月第一天,就能准确得到完整的月份数。
  • 完全保留了原代码的case分支结构、日期格式转换(103格式:dd/mm/yyyy)和结果拼接逻辑,仅修改核心计算部分。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 10:25:08