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

SQL Server存储过程上月日期范围遗漏最后一天的问题求助

修正SQL存储过程中上月日期范围遗漏最后一天的问题

你当前存储过程里上月结束日期的计算逻辑存在两个问题:一是计算基准和@today变量不一致,二是原有公式易产生误差,导致遗漏上月最后一天。

修正后的代码

DECLARE @today DATE = CONVERT(DATE, GETDATE() + 1);

-- 上月第一天(原有逻辑正确,可保留)
DECLARE @previous_month_from DATE = DATEADD(MONTH, DATEDIFF(MONTH, 0, @today) - 1, 0);

-- 修正后的上月最后一天
DECLARE @previous_month_to DATE = DATEADD(DAY, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, @today), 0));

逻辑说明

  • 先通过DATEADD(MONTH, DATEDIFF(MONTH, 0, @today), 0)获取@today所在月份的第一天
  • 对这个日期减1天,就能精准得到上月的最后一天,适配所有月份的天数(包括28/29/30/31天的情况)

比如当@today为11月1日时,本月第一天是11月1日,减1天就是10月31日,完美覆盖十月的全部日期;若@today是3月1日,减1天后会自动匹配2月的最后一天(闰年29日,平年28日)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 15:17:46