SQL 计算工作日内审批时间:判断审批是否在两天内完成
可以通过以下步骤来判断批准日期是否在两天内批准,并排除工厂日历中的周末和公假:
- 计算申请日期后两天的日期,记录为变量A。
- 在工厂日历中查询从申请日期到变量A之间的所有日期,排除周末和公假,记录为工作日数。
- 计算批准日期和申请日期的日期差,排除周末和公假,记录为实际批准工作日数。
- 如果实际批准工作日数小于等于2,并且大于等于工作日数,则判断批准日期在两天内批准。
SQL代码如下:
DECLARE @applyDate DATE = '2021-01-01'
DECLARE @approveDate DATE = '2021-01-04'
DECLARE @endDate DATE = DATEADD(day, 2, @applyDate)
DECLARE @workdays INT = (
SELECT COUNT(*) FROM factoryCalendar
WHERE date BETWEEN @applyDate AND @endDate
AND isWeekend = 0 AND isHoliday = 0
)
DECLARE @actualWorkdays INT = (
SELECT COUNT(*) FROM factoryCalendar
WHERE date BETWEEN @applyDate AND @approveDate
AND isWeekend = 0 AND isHoliday = 0
)
IF @actualWorkdays <= 2 AND @actualWorkdays >= @workdays
PRINT '批准日期在两天内批准'
ELSE
PRINT '批准日期不在两天内批准'
其中,@applyDate和@approveDate分别为申请日期和批准日期,factoryCalendar为工厂日历表,包含日期、是否周末、是否公假等字段。通过计算工作日数和实际批准工作日数,判断批准日期是否在两天内批准。
原文地址: https://www.cveoy.top/t/topic/nCqF 著作权归作者所有。请勿转载和采集!