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

如何在SQL Server中查询获取上一个月最后一个周六的日期

SQL Server 查询上月最后一个周六的实现方法

适用版本说明

  • SQL Server 2012及以上版本可直接使用内置EOMONTH函数实现
  • 更低版本可使用兼容写法实现

核心逻辑

  • 先计算出上一个月的最后一天
  • 根据上月最后一天的星期偏移对应天数,得到当月最后一个周六:如果最后一天本身是周六则直接取值,否则向前追溯最近的周六

具体实现代码

SQL Server 2012+版本

-- 固定一周第一天为周日,避免服务器DATEFIRST配置差异导致结果异常
SET DATEFIRST 7;

SELECT 
    DATEADD(
        DAY,
        - (DATEPART(WEEKDAY, EOMONTH(DATEADD(MONTH, -1, GETDATE()))) % 7),
        EOMONTH(DATEADD(MONTH, -1, GETDATE()))
    ) AS 上月最后一个周六

逻辑验证

以示例场景为例:当前日期为2021年9月,上月最后一天为2021-08-31(周二),DATEPART(WEEKDAY)返回值为3,3对7取余得3,向前偏移3天即得到2021-08-28,和示例结果一致。

低版本兼容写法(SQL Server 2012之前)

如果数据库版本不支持EOMONTH函数,可使用如下写法计算上月最后一天:

SET DATEFIRST 7;

SELECT 
    DATEADD(
        DAY,
        - (DATEPART(WEEKDAY, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), -1)) % 7),
        DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), -1)
    ) AS 上月最后一个周六

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:24:04