繁体   English   中英

计算两个日期之间的工作日数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM