T-SQL: DATEDIFF() between working dates
Function to see differences between dates in working days.
CREATE FUNCTION dbo.DifferenceWorkingDays (@Data1 AS DATE, @Data2 AS DATE)
RETURNS INT
AS
BEGIN
DECLARE @DataVar as DATETIME, @Giorni as INT
SET @DataVar=@Data2
SET @Giorni=0
--remove a day at time until reach the day requested
WHILE @DataVar > @Data1
BEGIN
SET @DataVar=DATEADD(d,-1,@DataVar)
--if saturday or sunday remove another day without update the counter
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
You can call it instead DATEDIFF() if you need the working day difference.
SELECT Database.dbo.DifferenceWorkingDays(GETDATE(), '2016-06-24')
To skip also holiday outside saturday and sundays, you have to add a custom table with this dates and include it in the function.
If you want to add working days to a date, take a look here.