Avatar billede babytrold Nybegynder
06. oktober 2008 - 12:17 Der er 5 kommentarer

Datoberegning uden weekender samt business hours

Jeg har fået foreslået nedenstående til at eksludere weekender i en beregning.

Kan man evt. udvide så man kan angive at man også ønsker at eksludere timer udenfor åbningsttid?

Fx.
startTime = 0800
endTime = 1800



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)
Avatar billede zebra_hansen Nybegynder
07. oktober 2008 - 14:30 #1
Tror ikke du skal regne med mere hjælp før du udløser de point jeg burde ha' for ovenstående forslag...
Avatar billede babytrold Nybegynder
07. oktober 2008 - 14:40 #2
Jeg spurgte dig om hvordan jeg giver dig point i det indlæg hvor du kom med svaret, da jeg er ny her.

Jeg vil hellere end gerne give dig point

-baby
Avatar billede zebra_hansen Nybegynder
07. oktober 2008 - 15:09 #3
Du skal afvente et "Svar" og ikke en kommentar. Når du så godtager en kommentar fra en bruger, så skal du udbede dig et svar så du kan uddele point. Det er ikke alle der samler på point, men det gør jeg:-)
Avatar billede babytrold Nybegynder
08. oktober 2008 - 14:01 #4
Zebra... Tak, så afventer jeg bare... Og så opretter jeg et helt nyt spørgsmål med hensyn til de "manglende point" for sidste indlæg.... Jeg kalder indlægget Zebra under MS SQL...

Er det en aftale?
Avatar billede babytrold Nybegynder
24. august 2010 - 11:18 #5
Kan jeg få et svar af dig, så jeg kan give dig point?
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester