[英]Calculate number of working days between two dates
我有一个 SQL 服务器查询,每天中午运行,查找前一天和今天之间输入的记录。
创建日期 | 记录标识 |
---|---|
06/18/2022 | 123456 |
DECLARE @ReportDate = 6/21/2022
SELECT *
FROM SampleTable
WHERE CreatedDate BETWEEN DATEADD(D,-1,@ReportDate) AND GETDATE()
它适用于周二到周六。 我遇到障碍的地方是报告在星期一或节假日后的第二天运行。 我需要一种方法使DATEADD
公式的 increment int 动态变化,以便它更改以说明星期日和/或假期。 注意星期六被认为是我们的工作日因此,如果今天报告日期是星期二 6/21,则增量 int 将为 -3。
先谢谢您的帮助。
在@ReportDate
之前获得 1 个工作日
DATEADD(D,-1,@ReportDate)
这将是
SELECT MAX(CalDate)
FROM CALENDAR
WHERE CalDate < @ReportDate
AND IsHoliday = 0 -- Not a holiday
AND IsWorkingDay = 1 -- is a working day
纳入您的查询
DECLARE @ReportDate DATE = '2022-06-20' -- a Monday
SELECT *
FROM SampleTable
WHERE CreatedDate BETWEEN (SELECT MAX(CalDate)
FROM CALENDAR
WHERE CalDate < @ReportDate
AND IsHoliday = 0
AND IsWorkingDay = 1)
AND GETDATE()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.