01. oktober 2008 - 15:24
Der 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.
Start_dato, og slut_dato er mine felter
03. oktober 2008 - 12:27
#4
Hej du kan bruge denne statement:
DECLARE
@StartDate DATETIME
,@EndDate DATETIME
,@CorrectedStartDate DATETIME
,@CorrectedEndDate DATETIME
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
)
SELECT DATEDIFF(mi, @CorrectedStartDate, @CorrectedEndDate)
-(DATEDIFF(wk, @CorrectedStartDate, @CorrectedEndDate) * 2 * 1440)