【发布时间】:2016-03-17 13:14:58
【问题描述】:
我有这个查询,它目前正在从前一个工作日关闭的 SQL Server 数据库中提取所有事件。它非常简洁,因为它使用模来独立于 @@DATEFIRST 本地设置。但是,我需要对其进行修改,以便在星期一它让我在星期五和星期日之间关闭所有事件。
当前代码:
SELECT
inc.Incident_Id, inc.Close_Time
FROM
inc
WHERE
CONVERT (CHAR(10), inc.Close_Time, 126) = CONVERT (CHAR(10), (DATEADD(DAY, CASE (DATEPART(WEEKDAY, GETDATE()) + @@DATEFIRST) % 7
WHEN 1 THEN -2
WHEN 2 THEN -3
ELSE -1
END, DATEDIFF(DAY, 0, GETDATE()))),126)
我尝试在第一次 CONVERT 之前使用另一个 CASE DATEPART(WEEKDAY, GETDATE()),但它没有成功,因为它看起来 >= 和
总结起来应该是这样的:
- 周一 - 周五和周日之间关闭事件
- 其他工作日 - 前一天关闭的事件
【问题讨论】:
标签: sql sql-server