Avatar billede hifi4all Nybegynder
01. marts 2008 - 12:57 Der er 5 kommentarer og
1 løsning

Opdaterer dato i MS SQL db m. ASP

Jeg forsøger at opdatere db´ens dato (MS SQL 9), med ét minuts forsinkelse, men uanset hvordan jeg forsøger, uskrives dato forkert.
Timestamp for minuttet (-1) synes at være korrekt, men resten af datoen går i kluder!

Dags dato skulle gerne se f.eks. sådan her ud "01-03-2008 12:10:00", men datoen udkrives med 03-01-2008...

Jeg har naturligvis angivet dansk datoformat i min kode (Session.lcid = 1030)

Har desuden forsøgt mig med en "international dato", for at sikre at db´en skriver den korrekte dato, men ej heller det virker! :(

Eks:
internationalDateTime = Year(Now()) & "-" & Month(Now()) & "-" & Day(Now()) & " " & Hour(Now()) & ":" & Minute(Now())& ":" & Second(Now())

SQL der skal opdatere datoen(code snip):

Int. dato forsøge:    rsUpdatepub.CommandText = "UPDATE tbl_XX SET x_active = 1, x_date = '"& dateadd("n", -1, internationalDateTime) &"' WHERE...
Datoforsøg med Now(): rsUpdatepub.CommandText = "UPDATE tbl_XX SET x_active = 1, x_date = '"& dateadd("n", -1, Now()) &"' WHERE...

Er der en venlig sjæl derude, der kan være mig behjælpelig?

På forhånd tak!!!
Avatar billede thesurfer Nybegynder
01. marts 2008 - 15:30 #1
Som regel virker Session.lcid = 1030 ikke som man ønsker.. :-)
Jeg ved ikke hvorfor.. men mange har problemer med det..

Problemet med datoen er, at den er sat til engelsk i databasen, og du bruger danske datoer..

Man kunne evt komme uden om problemet, hvis man brugte UNIX tid i stedet..
Det er antallet af sekunder siden 1 januar 1970 kl 00:00:00.

Antallet af sekunder vil ikke variere, i modsætning til "dd-mm-yyyy"/"mm-dd-yyyy" problemet..
Avatar billede nielle Nybegynder
01. marts 2008 - 15:41 #2
Hvorfor ikke bare bruges MS SQL's egne funktioner til jobbet?

rsUpdatepub.CommandText = "UPDATE tbl_XX SET x_active = 1, x_date = dateadd('n', -1, now()) WHERE... "
Avatar billede hifi4all Nybegynder
02. marts 2008 - 08:11 #3
Jeg skal lige huske at sige, at funktionen
--> internationalDateTime = Year(Now()) & "-" & Month(Now()) & "-" & Day(Now()) & " " & Hour(Now()) & ":" & Minute(Now())& ":" & Second(Now()) <--

Virker fint, hvis det bare er "her og nu" datoen jeg vil sætte ind i db´en, men problemet opstår kun når jeg forsøger at trække den ene minut fra!

Nielle: Ja, det viser jeg også i det oprindelige indlæg (ret mig hvis jeg tager fejl):
Datoforsøg med Now(): rsUpdatepub.CommandText = "UPDATE tbl_XX SET x_active = 1, x_date = '"& dateadd("n", -1, Now()) &"' WHERE...
Avatar billede hifi4all Nybegynder
02. marts 2008 - 08:24 #4
Har fundet en løsning der virker:
rsUpdatepub.CommandText = "UPDATE tbl_XX SET x_active = 1, x_date = dateadd(n, -10, GetDate()) WHERE...

I skal have mange tak for hjælpen! :)

Smider I et svar?
Avatar billede thesurfer Nybegynder
02. marts 2008 - 19:47 #5
Dem får nielle :-)
Avatar billede nielle Nybegynder
02. marts 2008 - 19:49 #6
> Nielle: Ja, det viser jeg også i det oprindelige indlæg (ret mig hvis jeg tager fejl):

Ja siden du beder om det så må jeg jo rette ;^)

Nej, i dit oprindelige spørgsmål er du ude og bruge de dato-funktioner som fidnes i ASP: Year(), Now(), DateAdd() osv. Der er der intet galt med, men man kan hurtigt opleve at få problemer hvis man så selv skal sammenstykke SQL-strengen. Det er også det der ske4r for dig: Skal di vælge dansk eller amerikansk datoformat.

Imidlertid er man slet ikke tvunget til at bruge ASP's varianter - enhver database med resekt for sig selv har nemlig nogle indbyggede dato- og tidsfunktioner. Det er dem jeg foreslår dig at bruge, og det er dem som du har brugt i din endelige løsning i 02/03-2008 08:11:00.

Det der narre er at - siden at det jo er Microsoft som har lavet både ASP og MS SQL - så har de også valgt at kalde dato/tidsfunktionerne akkurat det samme begge steder. Men det må man ikke lade sig narre af - det er ikke de samme funktioner.

Fidusen ved at anvende MS SQL's egen frem for dem ude fra ASP, er at MS SQL serverens versioner altid ved hvordan den den selv opfatter datoer og den slags. Når man skriver Date() eller Now() direkte i SQL strengen så vil den altid selv finde ud af at bruge den rette version.
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
Kurser inden for grundlæggende programmering

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