...
Er zijn in de MS Excel sheet alleen totaal uren geregistreerd. Voor de demonstratie zijn deze uren opgedeeld in verschillende categorieën.
De periode beslaat een aantal dagen van begin datum tot einddatum. Binnen deze periode vallen een aantal dagen waarin niet gewerkt wordt, zoals bv. weekeinden en officiële vakantiedagen. Hiervoor word de volgende functie gebruikt.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
CREATE FUNCTION [dbo].[NetWorkDays](
@StartDate DATETIME
,@EndDate DATETIME
) RETURNS INT
AS
BEGIN
DECLARE
@result INT
,@StartDate2 DATETIME
,@EndDate2 DATETIME
,@HolidayCount INT
SET @StartDate2 = DATEADD(d,8-DATEPART(dw, @StartDate), @StartDate)
SET @EndDate2 = DATEADD(d,1-DATEPART(dw ,@EndDate), @EndDate)
SET @result = DATEDIFF(d, @StartDate2, @EndDate2) * 5 / 7
+ DATEDIFF(d, @StartDate, @StartDate2) - 1
+ DATEDIFF(d, @EndDate2, @EndDate)
- CASE WHEN DATEPART(dw,@StartDate) = 1 THEN 1 ELSE 0 END
- case when DATEPART(dw,@EndDate) = 7 THEN 1 ELSE 0 END
SET @HolidayCount = (SELECT COUNT(*) FROM Holiday WHERE [Date] BETWEEN @StartDate AND @EndDate)
RETURN @result - @HolidayCount
END |