问题描述
实际上,经过多次测试后,该功能无法正常工作
例如,我尝试过Select * from [dbo].[fn_GetLeaveDays] ('2020-09-24',1,'2020-09-25',1)
并且应该只返回1,因为星期五是周末,但它返回2
请您协助寻找功能中的问题
ALTER FUNCTION [dbo].[fn_GetLeaveDays] (@DateFrom datetime2,@CalendarFunction int,@Dateto AS datetime2,@AdjustMode bit,@AdjustWeekEnds bit,@AdjustHolidays bit)
RETURNS @tbl table (totaldays int)
AS
BEGIN
IF @DateFrom > @Dateto
BEGIN
DECLARE @T datetime2 = @Dateto,@F datetime2 = @DateFrom;
SELECT @DateFrom = @T,@Dateto = @F;
END;
DECLARE @Count AS int = 0,@Date AS datetime2 = @DateFrom;
WHILE @Date < @Dateto
BEGIN
IF ((DATEPART(WEEKDAY,@Date) IN (6)
AND @AdjustWeekEnds = 1)
OR EXISTS (SELECT *
FROM [C3DCalendar].[dbo].[PRIMAVERA_CALENDAR_HOLIDAYS]
WHERE holiday_date = @Date
AND calendar_key = @CalendarFunction
AND @AdjustHolidays = 1))
BEGIN
SELECT @Count = @Count + 1;
END;
SELECT @Date = DATEADD(DAY,@Date);
END;
INSERT INTO @tbl
SELECT (DATEDIFF(DAY,@DateFrom,@Dateto) - (@Count)) + @AdjustMode;
RETURN;
END;
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)