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

ODBC环境下SQL排除周末:周一返回周五日期的语句修改需求

实现周一返回上周五、其他工作日返回昨日的SQL语句

你可以通过CASE条件判断结合星期数检测来实现这个逻辑,同时建议显式设置一周的起始日为周一,避免不同环境下星期数判断的歧义:

-- 显式设置周一为一周的第一天(避免默认周日为第一天的情况)
SET DATEFIRST 1;

SELECT 
    CASE 
        WHEN DATEPART(WEEKDAY, CAST(GETDATE() AS DATE)) = 1 -- 当前是周一
            THEN DATEADD(DD, -3, CAST(GETDATE() AS DATE)) -- 减去3天得到上周五
        ELSE 
            DATEADD(DD, -1, CAST(GETDATE() AS DATE)) -- 其他工作日返回昨日
    END AS TargetDate;

逻辑说明:

  • SET DATEFIRST 1:强制让SQL Server把周一识别为一周的第1天,这样DATEPART(WEEKDAY, ...)返回1代表周一,2代表周二,以此类推到5代表周五。
  • 当检测到当前是周一(返回值为1)时,直接减去3天,跳过周六和周日,得到上周五的日期。
  • 周二到周五时,保持原逻辑减去1天,返回昨日日期。

如果你的环境默认已经是周一为一周起始日,可以省略SET DATEFIRST 1,但保留它能让代码在任何环境下都稳定运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 05:15:31