计算一年中第 N 个工作日的 Core 表达式
假设一年中有 365 天,则一年中的工作日数为 260 天(假设周六、周日为非工作日)。
因此,一年的第 n 个工作日的 Core 表达式为:
DATEADD(day, n-1, DATEFROMPARTS(YEAR(GETDATE()),1,1))
+ (DATEDIFF(week, DATEFROMPARTS(YEAR(GETDATE()),1,1), DATEADD(day, n-1, DATEFROMPARTS(YEAR(GETDATE()),1,1))) * 2)
+ CASE WHEN DATEPART(weekday, DATEADD(day, n-1, DATEFROMPARTS(YEAR(GETDATE()),1,1))) = 1 THEN 1 ELSE 0 END
+ CASE WHEN DATEPART(weekday, DATEADD(day, n-1, DATEFROMPARTS(YEAR(GETDATE()),1,1))) = 7 THEN 1 ELSE 0 END
其中,n 为要求的工作日在一年中的顺序,从 1 开始计算。
该表达式首先计算出一年的第一天,然后加上 n-1 天,得到要求的日期。
接着,通过计算要求的日期是一年中的第几周来确定是否需要加上周末(两天)。
最后,通过判断要求的日期是星期日或星期六来确定是否需要再加上一个非工作日。
原文地址: https://www.cveoy.top/t/topic/lB1q 著作权归作者所有。请勿转载和采集!