Thursday, October 15, 2009

Calculate Working Days in SQL

This is a function that will allow you to calculate working days between two dates. A working day is a day that isn't a weekend. It does not subtract any holidays.

CREATE FUNCTION dbo.GetWorkingDays_GD
( @StartDate datetime,
@EndDate datetime )
RETURNS INT
AS
BEGIN

DECLARE @i INT
DECLARE @WorkDays INT
DECLARE @DaysNo INT
DECLARE @DatePivot DATETIME



SET @i = 0
SET @WorkDays = 0
SET @DaysNo = DATEDIFF(DD, @StartDate, @EndDate) +1

WHILE @i <= @DaysNo - 1
BEGIN
SET @DatePivot = DATEADD(DD, +@i, @StartDate)

IF DATENAME(DW, @DatePivot) NOT IN ('Saturday', 'Sunday') SET @WorkDays = @WorkDays + 1

SET @i = @i + 1
END

RETURN ( @WorkDays )
END

0 comments: