Avatar billede Simon Praktikant
25. maj 2004 - 14:12 Der er 10 kommentarer og
1 løsning

negativ dato

Hej
Jeg trækker datoer ud af datetime felter i en tabel, og nogle af dem er negative.
Hvorfor er de det?
Hvordan får jeg de negative gjort positive?
Avatar billede Slettet bruger
25. maj 2004 - 14:15 #1
findes der ikke et funktionskald som tager den absolutte værdi af dit "udtræk", ex. abs() ?
Avatar billede venne Nybegynder
25. maj 2004 - 14:26 #2
Hvad mener du med negative datoer? Hvordan ser de ud? Hvordan trækker du dem ud?
Avatar billede Slettet bruger
25. maj 2004 - 14:30 #3
mon ikke det er et negativt timestamp ?
Avatar billede Slettet bruger
25. maj 2004 - 14:31 #4
altså X antal ms siden "epoken"
Avatar billede Simon Praktikant
25. maj 2004 - 15:10 #5
Trækker jeg for eksempel et felt ud der ligger i kolonne "Inspection_End", så får jeg: "11:40:00"

hvis jeg bruger "convert(float(100),( Inspection_End))" på nøjagtig samme felt få jeg: "-1,51388888888888"

hvorfor er dette tal negativt?
(I øvrigt er 2-1,51388888888888=11:40:00)
Avatar billede venne Nybegynder
25. maj 2004 - 15:35 #6
Hvad forventer du at få ud af at konvertere en dato (klokkeslæt?) til float?
Hvad skal du bruge tallet til? Og hvilket tal vil du gerne have at 11:40:00 bliver til? Sekunder siden midnat fx?
Avatar billede Simon Praktikant
31. maj 2004 - 14:26 #7
jeg vil gerne lægge nogle tider sammen.
Når jeg benytter MS SQL manager til at se tabellerne står tidspunkterne fint nok. men lige så snart jeg begynder at lægge dem sammen går det galt, fordi nogle af dem er negative. hmmm.
Avatar billede Slettet bruger
31. maj 2004 - 14:50 #8
Kan det ikke være pga. at en float ikke kan indeholde et klokkeslæt, det er vist kun en long-datatype som kan det ? Et klokkeslæt vil i hvert fald aldrig kunne være i form af et kommatal (til min viden - det vil højest sandsynligt være en streng-repræsentation (som kan parses til et objekt), eller en long-værdi som er XX antal ms. siden epoken (1970-grønlangkål, kan ærligt talt ikke huske det).
Avatar billede venne Nybegynder
01. juni 2004 - 13:38 #9
Hvis dine datofelter kun indeholder klokkeslæt og du vil regne med dem, er det sikreste nok at bruge DATEDIFF i forhold til 'nul-datoen', dvs 1. januar 1900.

Eksempel som giver klokkeslættet i antal sekunder siden midnat:

SELECT DATEDIFF(SECOND, '19000101 00:00:00', Inspection_End)

Hvis du bruger samme beregning hver gang du henter en sådan værdi bør resultaterne være konsistente.
Avatar billede Simon Praktikant
03. juni 2004 - 13:30 #10
Tak for hjælpen.
Men jeg har stadig ikke fundet ud af hvorfor nogle datofelter er negative. Men det har måske noget at gøre med at databasen oprindeligt er skrevet i Access og senere konverteret til MS SQL.
Avatar billede venne Nybegynder
03. juni 2004 - 13:37 #11
Hvordan ser indholdet af datofelterne ud hvis du select'er dem uden convert?
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