Avatar billede sunesune Nybegynder
02. december 2011 - 16:18 Der er 3 kommentarer

Tidsintervaller

Hej alle,

jeg har et kæmpe problem her, som jeg håber i det mindste at komme nærmere et svar.

Jeg har nogle intervaller med løntrin, f. eks:

kl 00-06 - 100 kr
kl 06-17 - 105 kr
kl 17-23 - 110 kr
kl 23-24 - 115 kr.

Dernæst har jeg en masse datoer og tider, jeg skal have udregnet hvor mange timer af, der falder i hver interval. dataene er gemt således:

start: 01-01-2012 07:00:00
slut: 01-01-2012 23:00:00

Her skal jeg så udtrække:

kl 00-06 - 0 timer
kl 06-17 - 10 timer
kl 17-23 - 6 timer
kl 23-24 - 0 timer

Jeg kan ikke få noget til at stemme, og har meget svært ved at se hvorledes jeg skal sammenligne dataene med intervallerne og lave beregningerne. Det er nemt at tjekke dataene for antal timer, men hvordan jeg så derfra sammenligner med intervallerne er mig åbenbart uvist.

Er der nogen der har nogen gode ideer?

Mvh Martin
Avatar billede Syska Mester
02. december 2011 - 18:54 #1
Simpelt ... gør det i dit program i stedet for i databasen. Den kan meget nemmere håndtere det.

DB er for data.
Prorgam er til logik.

mvh
Avatar billede arne_v Ekspert
02. december 2011 - 22:40 #2
Det er helt klart logik der skal programmeres.

Enten i app eller i en CLR SP eller i en TSQL SP.

Og TSQL SP vil nok vaere noget klodset.
Avatar billede Slettet bruger
05. december 2011 - 22:15 #3
Bliver ret klundet fordi MS SQL ikke har greatest/least som Oracle - men her er et bud:
(Er skrevet som om Start og Slut er omregnet til deci-timer).

select
  Dato
  ,case when Start < 6 and Slut < 6 then Slut-Start
        when Start < 6 then 6-Start
      end "0-6"
  ,case when Slut >= 6 and Start < 17 then
      case when Slut < 17 and Start >= 6 then Slut-Start
          when Slut < 17 and Start < 6 then Slut-6
          when Slut >= 17 and Start >= 6 then 17-Start
          else 17-6 end
      end "6-17"
  ,case when Slut >= 17 and Start < 23 then
      case when Slut < 23 and Start >= 17 then Slut-Start
          when Slut < 23 and Start < 17 then Slut-17
          when Slut >= 23 and Start >= 17 then 23-Start
          else 23-17 end
      end "17-23"
  ,case when Slut >= 23 and Start >= 23 then Slut-Start
        when Slut >= 23 then 1 else 0
  end "23-24"
from Tabel
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