Avatar billede Slettet bruger
07. november 2007 - 11:49 Der er 4 kommentarer og
1 løsning

Sammenligning af datoer i DB2

Hej alle

Jeg arbejder med en DB2 database som har følgende felter:

DATO1, TID1, DATO2, TID2

Jeg skal lave en forespørgsel der sammenligner DATO1+TID1 med DATO2+TID2 og hvis DATO1+TID1 er mindst skal den returnere 1, ellers 0.

Jeg har søgt på google og fundet frem til (hvis jeg ikke er helt galt på den) at det ikke umiddelbart er muligt at samle DATO1 og TID1 til et TIMESTAMP, og for det andet at det ikke er den bedste idé at sammenligne 2 timestamps da det ikke vil være præcist, men et ca. gæt.

Derfor har jeg forsøgt mig med at sammenligne DATO og TID hver for sig, men det giver ikke det ønskede resultat:

SUM(
CASE
WHEN DATO1<DATO2 THEN 0
WHEN DATO1=DATO2 THEN
  CASE
  WHEN TID1<=TID2 THEN 0 ELSE 1
  END
ELSE 1
END)
AS FELTNAVN


Håber i kan hjælpe mig, er ved at have stirret mig blind på koden :-)
Avatar billede bauerdata Nybegynder
07. november 2007 - 15:47 #1
Hvilke typer er DAT01 og TIME1 ?
Avatar billede bauerdata Nybegynder
07. november 2007 - 16:11 #2
du skal da ikke have SUM med
CASE
WHEN DATO1<DATO2 THEN 0
WHEN DATO1=DATO2 THEN
  CASE
  WHEN TID1<=TID2 THEN 0 ELSE 1
  END
ELSE 1
END
er da ok.

PS. se lige det her link.
http://www.ibm.com/developerworks/db2/library/techarticle/0211yip/0211yip3.html
Avatar billede Slettet bruger
08. november 2007 - 06:18 #3
Hej bauerdata, jo SUM skal med, det fik jeg vist ikke forklaret godt nok i spørgsmålet. Fandt ud af at min formel faktisk virkede fint nok, men at jeg havde glemt en CASE statement som efterfølgende gjorde at resultatet blev korrekt.

Bortset fra det, kan du forklare mig hvordan man laver 2 felter af datatype DATE og TIME til et TIMESTAMP, hvis muligt?
Avatar billede Slettet bruger
08. november 2007 - 06:19 #4
Læste selv problemet, ovenstående CASE manglede lige lidt ekstra før resultatet blev som forventet.
Avatar billede bauerdata Nybegynder
08. november 2007 - 09:04 #5
Ved ikke om det virker i din kontekst, men prøv det her :-)
select timestamp( char(DATO1) ||' '|| char(time1) ) from xxxx
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



Seneste spørgsmål Seneste aktivitet
I går 23:37 Poe strøm Af lurup i LAN/WAN
I går 14:46 GIF-EDITOR Af snestrup2000 i Billedbehandling
I går 14:03 Logge ind Af Bob i PC
I går 12:12 2 skærme - 1 virker - den anden siger No signal Af eksmojo i Skærme
I går 10:33 openvpn projekt Af dcedata1977 i Windows