CREATE FUNCTION dbo.DifferenzaDateGiorniLav (@Data1 AS DATE, @Data2 AS DATE)
RETURNS INT
AS
BEGIN
DECLARE @DataVar as DATETIME, @Giorni as INT
SET @DataVar=@Data2
SET @Giorni=0
-- toglie un giorno alla volta fino a che raggiunge il numero di giorni richiesto
WHILE @DataVar > @Data1
BEGIN
SET @DataVar=DATEADD(d,-1,@DataVar)
-- se sabato o domenica toglie un altro giorno alla data senza aggiornare il
-- contatore
IF DATEPART(dw,@DataVar)= 1 SET @DataVar=DATEADD(d,-1,@DataVar)
IF DATEPART(dw,@DataVar)= 7 SET @DataVar=DATEADD(d,-1,@DataVar)
SET @Giorni=@Giorni+1
END
RETURN @Giorni
END
GO
/* E' utilizzabile al posto della DATEDIFF: */
SELECT Database.dbo.DifferenzaDateGiorniLav(GETDATE(), '2016-06-24')
/* Non tiene conto di eventuali giorni festivi infrasettimanali, per considerarli l'unica possibilità è crearsi una tabella con i giorni festivi da utilizzare poi nella funzione. Per la funzione per aggiungere giorni lavorativi vai qui. */
No comments:
Post a Comment