01. oktober 2008 - 15:24Der er
8 kommentarer og 1 løsning
Datoberegning uden weekender
Jeg kunne godt tænke mig at udregne antal minutter for eksempel over en given periode. Det skal være uden weekender, og så skal resultatet helst ikke returnere en negativ værdi hvis der fx er tale om 2 dage midt på ugen.
SET @StartDate = '2008-09-06 17:58' SET @EndDate = '2008-09-13 21:59' SET @CorrectedStartDate = ( CASE WHEN (DATEPART(dw, @StartDate) + @@DATEFIRST) % 7 = 0 then CAST(FLOOR(CAST(DATEADD(DD,2,@StartDate) AS FLOAT )) AS DATETIME) -- 0: Saturday -> forward 2 days, strip time. WHEN (DATEPART(dw, @StartDate) + @@DATEFIRST) % 7 = 1 then CAST(FLOOR(CAST(DATEADD(DD,1,@StartDate) AS FLOAT )) AS DATETIME) -- 1: Sunday -> forward 1 day, strip time ELSE @StartDate END ) SET @CorrectedEndDate = ( CASE WHEN (DATEPART(dw, @EndDate) + @@DATEFIRST) % 7 = 0 then CAST(FLOOR(CAST(@EndDate AS FLOAT )) AS DATETIME) -- 0: Saturday -> strip time to reverse to midnight. WHEN (DATEPART(dw, @EndDate) + @@DATEFIRST) % 7 = 1 then CAST(FLOOR(CAST(DATEADD(DD,-1,@EndDate) AS FLOAT )) AS DATETIME) -- 1: Sunday -> backwards 1 day, strip time to reverse to midnight. ELSE @EndDate END )
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.