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

如何基于星期几修改SQL Server中的查询运行逻辑?

自动切换工作日与周一的日期范围逻辑实现

直接用SQL Server的日期判断函数结合条件赋值,就能替代手动注释/取消注释的操作,实现自动切换逻辑:

-- 统一设置周一为每周起始日,避免不同环境DATEFIRST设置差异
SET DATEFIRST 1;

DECLARE @STARTDATE DATE, @PREV15STARTDATE DATE;

-- 根据当天是否为周一自动赋值
SELECT 
    @STARTDATE = CASE WHEN DATEPART(WEEKDAY, GETDATE()) = 1 THEN DATEADD(DAY, -3, GETDATE()) ELSE DATEADD(DAY, -1, GETDATE()) END,
    @PREV15STARTDATE = CASE WHEN DATEPART(WEEKDAY, GETDATE()) = 1 THEN DATEADD(DAY, -17, GETDATE()) ELSE DATEADD(DAY, -15, GETDATE()) END;

-- 后续SELECT语句直接使用这两个变量过滤时间范围即可
-- SELECT * FROM your_table WHERE ACTIVITY_CREATE_DATE_TIME BETWEEN @PREV15STARTDATE AND @STARTDATE

逻辑说明

  • SET DATEFIRST 1:将周一设为每周的第一天,确保DATEPART(WEEKDAY, GETDATE())返回1时代表周一,规避不同服务器默认星期起始日(如周日)带来的判断误差。
  • 条件赋值规则:
    • 当天是周一:@STARTDATE取当前日期减3天(对应上周五),@PREV15STARTDATE取当前日期减17天(匹配15天前的范围调整)。
    • 非周一:保持原逻辑,@STARTDATE取前一天,@PREV15STARTDATE取前15天。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 09:42:43