Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Null on Null Input | False |
| Schema Bound | False |
| Assembly |
Parameters
5| Name | Data Type | Length | Description |
|---|---|---|---|
| (Result) | datetime | 8 | |
| @fecha_start | datetime | 8 | |
| @dias | int | 4 | |
| @ignora_feriados | bit | 1 | |
| @lista_feriados | varchar | -1 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date, ,>
-- Description: <Description, ,>
-- =============================================
CREATE OR ALTER FUNCTION dbo.AdicionarDiasFecha
(
@fecha_start datetime,
@dias int = 1,
@ignora_feriados bit = 0,
@lista_feriados varchar(MAX) = '2017-02-27,2017-02-28,2017-03-24,2017-04-02,2017-04-13,2017-04-14,2017-05-01,2017-06-17,2017-06-20'
)
RETURNS DATETIME
AS
BEGIN
-- Declare the return variable here
DECLARE @f1 DATETIME
DECLARE @added int = 0
DECLARE @dia DATETIME = CONVERT(DATE,@fecha_start,121)
WHILE @added < @dias BEGIN
IF(DATEPART(dw, @dia) > 1 AND DATEPART(dw, @dia) < 7) BEGIN
IF @ignora_feriados = 0 BEGIN
IF (SELECT COUNT(*) FROM dbo.DelimitedSplit8K(@lista_feriados,',') ff WHERE ff.item = CONVERT(VARCHAR,CONVERT(DATE,@dia,121),121)) = 0 BEGIN
SET @added = @added + 1
END
END ELSE BEGIN
SET @added = @added + 1
END
END
SET @dia = DATEADD(day, 1, @dia)
END
SET @f1 = DATEADD(SECOND, -1, @dia)
-- Return the result of the function
RETURN @F1
END
GO
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date, ,>
-- Description: <Description, ,>
-- =============================================
CREATE OR ALTER FUNCTION dbo.AdicionarDiasFecha
(
@fecha_start datetime,
@dias int = 1,
@ignora_feriados bit = 0,
@lista_feriados varchar(MAX) = '2017-02-27,2017-02-28,2017-03-24,2017-04-02,2017-04-13,2017-04-14,2017-05-01,2017-06-17,2017-06-20'
)
RETURNS DATETIME
AS
BEGIN
-- Declare the return variable here
DECLARE @f1 DATETIME
DECLARE @added int = 0
DECLARE @dia DATETIME = CONVERT(DATE,@fecha_start,121)
WHILE @added < @dias BEGIN
IF(DATEPART(dw, @dia) > 1 AND DATEPART(dw, @dia) < 7) BEGIN
IF @ignora_feriados = 0 BEGIN
IF (SELECT COUNT(*) FROM dbo.DelimitedSplit8K(@lista_feriados,',') ff WHERE ff.item = CONVERT(VARCHAR,CONVERT(DATE,@dia,121),121)) = 0 BEGIN
SET @added = @added + 1
END
END ELSE BEGIN
SET @added = @added + 1
END
END
SET @dia = DATEADD(day, 1, @dia)
END
SET @f1 = DATEADD(SECOND, -1, @dia)
-- Return the result of the function
RETURN @F1
END
GO