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