Есть ли способ вычислить дату, которая составляет n
рабочих дней в будущем или прошлом без итерации?
Например: если дано 1.1.1985, какая дата является 1000 рабочих дней спустя?
Редактировать: в моем случае рабочие дни с понедельника по пятницу, не считая праздничных дней.
Это работает, но слишком медленно:
create function slow(@i int, @date date)
returns date
as
begin
while (@i != 0)
begin
select @date = dateadd(dd, sign( @i), @date)
if (datepart(dw, @date) = 1 or datepart(dw, @date) = 7)
continue
select @i = @i - sign(@i)
end
return @date
end