T-SQL: Funzione per aggiungere un determinato numero di giorni lavorativi a una data

/* Funzione creata per aggiungere giorni lavorativi a una data: */


CREATE FUNCTION dbo.AggiungiGiorniLavorativi (@Data AS DATE, @Giorni AS INT)

RETURNS DATETIME

AS

BEGIN

    DECLARE @DataFinale as DATETIME, @contatore as int
    SET @contatore=0
    
-- aggiunge un giorno alla volta fino a che raggiunge il numero di giorni richiesto    
    WHILE @contatore < @Giorni
    
    BEGIN
       SET @Data=DATEADD(d,1,@Data)
       
-- se sabato o domenica aggiunge un altro giorno alla data senza aggiornare il contatore
       IF DATEPART(dw,@Data)= 7 SET @Data=DATEADD(d,1,@Data)
       IF DATEPART(dw,@Data)= 1 SET @Data=DATEADD(d,1,@Data)
       
       SET @contatore=@contatore+1  
    END
    
    SET @DataFinale = @Data
  
    RETURN @DataFinale

END

GO


/* Utilizzabile al posto della DATEADD: */

SELECT Database.dbo.AggiungiGiorniLavorativi(GETDATE(), 3)

/* Non tiente conto di eventuali giorni festivi infrasettimanali, per considerarli l'unica possibilità è crearsi una tabella con i giorni festivi da utilizzare poi nella funzione. */



No comments:

Post a Comment