SQL Server如何实现排除周末的前一工作日日期查询
调整后可排除周末的SQL查询方案
核心逻辑说明
- 依赖SQL Server内置的
DATEPART(WEEKDAY, date)函数判断当前日期是周几 - 若当前为周一(默认区域配置下
DATEPART(WEEKDAY, GETDATE())返回值为2),日期偏移量设为-3,取3天前的上周五数据 - 其余工作日日期偏移量设为-1,取前一天的工作日数据
完整SQL语句
SELECT * FROM MyTable WHERE CAST(MyTable.DATE AS DATE) = DATEADD( day, CASE WHEN DATEPART(WEEKDAY, CAST(GETDATE() AS DATE)) = 2 THEN -3 ELSE -1 END, CAST(GETDATE() AS date) )
注意事项
如果你的数据库实例配置的星期起始日不是周日,可以先执行
SELECT @@DATEFIRST确认当前星期起始值,再对应调整CASE语句的判断数值即可。
内容的提问来源于stack exchange,提问作者wysouf
相关产品推荐
相关产品推荐

