
SUMAR DIAS HABILES
Publicado por Sandra (2 intervenciones) el 27/09/2022 22:41:59
Hola quisiera que me ayuden, tengo la siguiente función que me resta cierta cantidad de dÃas a una consulta, quisiera que me ayudaran a validar, ¿Porqué al modificarla para que en lugar de restar me sume dÃas no me realiza el calculo correctamente? Gracias
ALTER FUNCTION [dbo].[func_AABL_DIAS_HABILES_AUTECO]
(
--FECHA DESDE LA QUE SE CALCULA
@FechaCalculo DATE,
--DIAS HABILES HACIA ATRAS
@Dias INT
)
RETURNS DATE
AS
BEGIN
DECLARE @DIA AS TABLE
(
IDDIA INT IDENTITY(1,1),
FECHA DATE,
FDS INT DEFAULT 0,
FESTIVO INT DEFAULT 0,
NORMAL INT DEFAULT 0
)
DECLARE @DiasCont INT = 0
DECLARE @FechaRecorre DATE = @FechaCalculo
DECLARE @FechaReturn DATE
WHILE @DiasCont <= @Dias
BEGIN
INSERT INTO @DIA(FECHA)
SELECT @FechaRecorre
UPDATE A SET FDS = 1
FROM
@DIA A
WHERE
DATENAME(weekday,FECHA) IN ('Saturday','Sunday')
UPDATE A SET FESTIVO = 1
FROM
@DIA A INNER JOIN tbl_GENERAL_DiasFeriados B ON
A.FECHA = B.dtDate
UPDATE A SET NORMAL = 1
FROM
@DIA A
WHERE FDS = 0 AND FESTIVO = 0
SET @FechaRecorre = (DATEADD(dd,1,@FechaRecorre))
SET @DiasCont = (SELECT SUM(NORMAL) FROM @DIA)
END
SET @FechaReturn =
(
SELECT FECHA
FROM
@DIA A INNER JOIN (SELECT MAX(IDDIA) IDDIA FROM @DIA) B ON
A.IDDIA = B.IDDIA
)
RETURN @FechaReturn
END
ALTER FUNCTION [dbo].[func_AABL_DIAS_HABILES_AUTECO]
(
--FECHA DESDE LA QUE SE CALCULA
@FechaCalculo DATE,
--DIAS HABILES HACIA ATRAS
@Dias INT
)
RETURNS DATE
AS
BEGIN
DECLARE @DIA AS TABLE
(
IDDIA INT IDENTITY(1,1),
FECHA DATE,
FDS INT DEFAULT 0,
FESTIVO INT DEFAULT 0,
NORMAL INT DEFAULT 0
)
DECLARE @DiasCont INT = 0
DECLARE @FechaRecorre DATE = @FechaCalculo
DECLARE @FechaReturn DATE
WHILE @DiasCont <= @Dias
BEGIN
INSERT INTO @DIA(FECHA)
SELECT @FechaRecorre
UPDATE A SET FDS = 1
FROM
@DIA A
WHERE
DATENAME(weekday,FECHA) IN ('Saturday','Sunday')
UPDATE A SET FESTIVO = 1
FROM
@DIA A INNER JOIN tbl_GENERAL_DiasFeriados B ON
A.FECHA = B.dtDate
UPDATE A SET NORMAL = 1
FROM
@DIA A
WHERE FDS = 0 AND FESTIVO = 0
SET @FechaRecorre = (DATEADD(dd,1,@FechaRecorre))
SET @DiasCont = (SELECT SUM(NORMAL) FROM @DIA)
END
SET @FechaReturn =
(
SELECT FECHA
FROM
@DIA A INNER JOIN (SELECT MAX(IDDIA) IDDIA FROM @DIA) B ON
A.IDDIA = B.IDDIA
)
RETURN @FechaReturn
END
Valora esta pregunta


0