Avatar billede wildthing Nybegynder
16. april 2003 - 12:03 Der er 14 kommentarer og
1 løsning

Date&Time i SQL update fejler

Måske skulle jeg hellere ha' stillet spørgsmålet i ASP forum, men nu prøver jeg her.

Jeg har en SQL database hvori et datofelt er et såkaldt UTC time felt, altså dato og tid (ex. 18-04-2003 16:30:00)

Når jeg med en SQL query henter feltet ind og debugger på objektet vises variablem som 18-04-2003 16:30:00 Alt ok

Nu vil jeg bare gerne "update" feltet med en ny tid.

til det anvender jeg:
    strSQL = "UPDATE tttaad500200 SET t_edte=18-04-2003 16:30:00 WHERE t_cjob='PL-SLS '"
    objRs.Open strSQL, objConn

men ikke så mærkeligt brokker den sig over ":" i tiden...

Det eneste jeg kan f til at virke er at skrive 37726.25 hvor første halvdel jo er dato og efter punktum tiden. Her 06:00:00 eller en kvart dag.

Nu er jeg ikke så vild med at skulle omregne til dette format, så er der en som ved hvad jeg kan gøre?

wildthing
Avatar billede bak Forsker
16. april 2003 - 12:56 #1
Nu er jeg ikke APS-ekspert, men så vidt jeg husker skal man (for at SQL ved at det er en dato) omgive dato og tid med #.

strSQL = "UPDATE tttaad500200 SET t_edte=#18-04-2003 16:30:00# WHERE t_cjob='PL-SLS '"
Avatar billede wildthing Nybegynder
16. april 2003 - 12:59 #2
Det er kun ved Access databaser og ikke SQL databaser.

wildthing
Avatar billede sjap Praktikant
17. april 2003 - 09:16 #3
wildthing
Har du fået løst problemet? Det som bak skriver, gælder faktisk for Access (jeg ved ikke om det også gælder for andre SQL dialekter, men jeg ved det gælder for Access).
Avatar billede wildthing Nybegynder
18. april 2003 - 11:37 #4
Jeg  gentager hermed min kommentar.
Jeg arbejder med SQL DB og ikke Access, så det er ikke det. Det er korrekt at det gælder ved Access.

nej jeg har ikke fundet en løsning endnu:-(

mvh
wildthing
Avatar billede terry Ekspert
18. april 2003 - 11:40 #5
strSQL = "UPDATE tttaad500200 SET t_edte = '2003-04-18 16:30:00' WHERE t_cjob='PL-SLS'"
Avatar billede terry Ekspert
18. april 2003 - 11:41 #6
You can also try
strSQL = "UPDATE tttaad500200 SET t_edte = 18-04-2003 16:30:00' WHERE t_cjob='PL-SLS'"
Avatar billede terry Ekspert
18. april 2003 - 11:42 #7
Its best to keep the date in YYYY-MM-DD format otherwise you can have problems

06-07-2003 is this 6th July or 7th June?
Avatar billede sjap Praktikant
18. april 2003 - 11:49 #8
Beklager wildthing - jeg misforstod det du skrev 16/04-2003 12:59:24  ;-)
Avatar billede sjap Praktikant
18. april 2003 - 12:02 #9
Jeg har da også lige et gæt:

strSQL = "UPDATE tttaad500200 SET t_edte={ts '18-04-2003 16:30:00'} WHERE t_cjob='PL-SLS '"

Men jeg ved ikke om dato-formatet måske skal være yyyy-mm-dd ?
Avatar billede wildthing Nybegynder
18. april 2003 - 17:14 #10
Tusind tak for alle budene jeg holder lige ferie, men vender tilbage efter test i starten af næste uge. Husk nu at holde påske ikk';-)

Wildthing
Avatar billede bak Forsker
19. april 2003 - 13:33 #11
Et alternativ:

Dim DatoTid As Double
Dim szDato As String
szDato = "18-04-2003 16:30"
DatoTid = DateValue(szDato) + TimeValue(szDato)

strSQL = "UPDATE tttaad500200 SET t_edte=" & DatoTid & "  WHERE t_cjob='PL-SLS '"
Avatar billede wildthing Nybegynder
22. april 2003 - 08:09 #12
Of course Terry. I should have tried that one. '04-18-2003 16:30:00' works as well. You get all my credits:-)
Hverken BAK eller Superjap's forslag kunne jeg få vendt så de ikke fejlede (brugte ikke meget tid herpå)
Tak for hjælpen til jer alle.

wildthing
Avatar billede terry Ekspert
22. april 2003 - 08:38 #13
thanks.
Take note of my comment, otherwise you will get problems :o)
18/04-2003 11:42:26
Avatar billede wildthing Nybegynder
22. april 2003 - 15:27 #14
Problemet med BAK's løsning er blot at den tager ',' istedet for '.' som dato og tid seperator, hvilket nok skyldes at jeg kører dansk setup. Der må være en vej til at erstatte med punktum på en let måde.

Wildthing
Avatar billede wildthing Nybegynder
22. april 2003 - 16:15 #15
Om det er helt efter bogen ved jeg ikke, men ved at sætte den ekstra linie ind hvor jeg ændrer dato(37729,5 der svarer til datoen og tidspunktet) til en string. datostr variablen omdanner komma til punktum:-) og kan da bruges.

Dim DatoTid As Double
Dim szDato As String
szDato = "04-18-2003 12:00"

DatoTid = DateValue(szDato) + TimeValue(szDato)
datostr = Str(DatoTid)

strSQL = "UPDATE tttaad500200 SET t_edte=" & datostr & "  WHERE t_cjob='PL-SLS '"
    objRs.Open strSQL, objConn
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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