Sp Contador De Días Hábiles
CREATE FUNCTION [dbo].[DifDias](@fch_ini datetime, @fch_fin datetime)
RETURNS int
AS
BEGIN
DECLARE @TotalDias DECIMAL(6,1) --Con esta variable
calculamos cuantos dias "normales" hay en el rango de fechas
DECLARE @DiasNoLaborables INT
--Con esta variable
acumulamos los dias no laborables
DECLARE @DiasFeriados SMALLINT --Total dias
feriados entre el rango de fechas
DECLARE @Cnt INT --esta variable nos sirve de
contador para saber cuando lleguemos al ultimo dia del rango
DECLARE @EvalDate DATETIME
--esta variable es
la que comparamos para saber si el dia que esta calculando es sábado o domingo
SET @Cnt = 0
SET @DiasNoLaborables = 0
--Calculamos cuantos dias normales hay en
el rango de fechas
SELECT @TotalDias =
DATEDIFF(HOUR,@fch_ini,@fch_fin) / 24.0--Se maneja diferencia de
dias a nivel horas
SELECT @DiasFeriados =
COUNT(1) FROM Configuracion.DiasFestivos WHERE feFestiva >= @fch_ini AND feFestiva <= @fch_fin
WHILE @Cnt < @TotalDias
BEGIN
SELECT @EvalDate = @fch_ini + @Cnt
IF datepart(dw,@EvalDate) = 6 OR datepart(dw,@EvalDate) = 7
BEGIN
SET @DiasNoLaborables = @DiasNoLaborables + 1
END
SET @Cnt = @Cnt + 1
END
RETURN cast((@TotalDias - @DiasNoLaborables - @DiasFeriados) as int)
END