Avatar billede skwat Praktikant
29. december 2004 - 16:11 Der er 5 kommentarer og
1 løsning

Læse SQL DateTime

Hejsa,

Jeg har nogle udfordringer med at læse en DataTime ud af min SqlDataReader.

Problemet er todelt
Jeg gerne vil kunne referer til collum navn og ikke det index den har. Ligesom når man bruger dr[”dato”] , men dr.GetSqlDateTime så tager den kun en int som parameter.

Andet problem er, når vi kommer langt tilbage i tiden, så ser det lidt ud som om at tids delen forsvinder, er der nogen ting man skal være specielt opmærksomme på?

Mvh,
Skwat
Avatar billede arne_v Ekspert
29. december 2004 - 16:24 #1
dr.GetSqldateTime(dr.GetOrdinal("dato")) må løse det første problem
Avatar billede arne_v Ekspert
29. december 2004 - 16:26 #2
Med hensyn til det andet, så er det lidt svært at svare på uden mere info.

Hvor langt tilbage ?

Er der faktisk tid i databasen så langt tilbage ?
Avatar billede skwat Praktikant
29. december 2004 - 17:32 #3
Hej Arne,

nummer 1 er løst, takker. Jeg syntes egenteligt at det er dårlig stil at de første 10 steder jeg var på via google, brugte alle det index som feltet nu har(incl. på msdn)

Nummer 2, her har jeg nok været lidt for hurtig, det system som jeg udvikler på er databasen designet af en Clarion udvikler, og her har man valgt at splitte alle dato og tidspunkter op, således at man har en createdate og en createtime. Normalt kan man i SQL så vælge at "lægge" to datoer sammen, simpelt select createdate + createtime. (tids delen er altid bare taget ud fra 1-1-1900)
Men i mellemtiden har der været en og eller anden og udvikle et lille program som ikke overholder denne konvention. Hvorfor createdate indenholder både dato og tid, ligesom createtime.

Min udfordring er så, at lægge tidsdelen af createtime sammen med datodelen af createdate. Og jeg ville helst undgå at gøre det i SQL, da databasen har nok at se til i forvejen.

Det jeg har forsøgt med indtil nu er createdate.add(createtime.TimeOfDay); men det virker ikke som forventet. Hvis jeg lægger 2004-01-03 00:00:00.000 sammen med 1900-01-01 13:43:23.334 bliver resultatet 2004-01-03 00:00:00.000

Langt, og muligvis uforståeligt.
Avatar billede arne_v Ekspert
29. december 2004 - 17:49 #4
Prøv:

createdate = createdate.Add(createtime.TimeOfDay);

(Add ændrer ikke objektet men returnerer et nyt)
Avatar billede skwat Praktikant
29. december 2004 - 19:31 #5
Hej Arne,

Tak for hjælpen, det gik også pludseligt op for mig.

Læg et svar, så skal jeg smide en klat i det hav du har fået lavet dig ;)
Avatar billede arne_v Ekspert
29. december 2004 - 19:32 #6
ok
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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