Avatar billede jacand Nybegynder
26. februar 2005 - 00:52 Der er 7 kommentarer og
1 løsning

Store Dato problemer

Jeg har store dato problemer :-|
jeg har Session.LCID = 1030 i toppen af min kode, men når jeg indsætter datoen i min SQL server bytter den rundt på datoen.
F.eks. vises datoen 01-03-2005 fint på siden med response.write  DateAdd("d", 3, date) men når jeg sætter den ind i databasen bliver den til 03-01-2005.
help :-)
Avatar billede eagleeye Praktikant
26. februar 2005 - 00:58 #1
Når man bruger danske datoer og Access vil Access bytter rundt på måned. Problemet opstår fordi Access bruger US eller UK dato format via SQL, som enten er yyyy-mm-dd eller mm-dd-yyyy.

Når man så indsætter en dato i dansk dato format som er dd-mm-yyyy, vil Access bytte rundt på dag og måned i datoen.

Der er en løsning og det er at bruge dato funktionerne Year, Month og Day til at formatere din dato.

Eks:
<%
dato = "12-03-2005"
strDato = Year(dato) & "-" & Month(dato) & "-" & Day(dato)
SQL = "INSERT INTO tablenavn (dato) VALUES (#" & strDato & "#)"
%>
Avatar billede jacand Nybegynder
26. februar 2005 - 01:00 #2
eagleeye> jeg bruger en SQL server, og mit mål er at der skal stå 01-03-2005 i databasen.
Avatar billede eagleeye Praktikant
26. februar 2005 - 01:04 #3
Arh det var ikke access.

Men hvad sker hvis du prøver med formatet yyyy-mm-dd ?
Avatar billede eagleeye Praktikant
26. februar 2005 - 01:08 #4
Jeg kender ikke ret meget til SQL server. Men det er nok i samme stil som med Access at den via SQL forvendter et specielt dato format yyyy-mm-dd eller mm-dd-yyyy. Databasen formatere så selv til det format kolonnen er sat til. Hvis du overføre din dato som:

03-01-2005  (mm-dd-yyyy) så bliver den rigtig også for dato hvor dagen er større end 12.
Avatar billede jacand Nybegynder
26. februar 2005 - 11:59 #5
Hmm jeg sad lige og kiggede på det med friske øjne her til morgen :-)
Hvis jeg indsætter i databasen med
rs("dato") = DateAdd("d", 3, date)
rs.update
Gir det 01-03-2005 i databasen

men
dato = "01-03-2005"
rs("dato") = dato
rs.update
Gir det 03-01-2005 i databasen

Hvor imod
dato = "01-03-2005"
rs("dato") = "'" & dato & "'" 
rs.update
gir det rigtigt altså 01-03-2005

Det må så være når sql serveren få en dato i tekst format, f.eks. fra en tekst boks, at serveren mener at den meget bedre ved hvordan datoen skal være end den der har indtastet den "¤#¤"%#&#&/()/&!
Gud hvor jeg elsker microsoft en gang imellem :-)
Avatar billede jacand Nybegynder
26. februar 2005 - 12:24 #6
Jeg fik løst mit problem på denne måde:
datod = DateDiff("d",Date,request.form("dato"))
rs("dato") = DateAdd("d", datod, date)
Jeg ved ikke om det er den bedste, men det virker :-)
Avatar billede eagleeye Praktikant
26. februar 2005 - 12:29 #7
Ok jo hvis den virker kan man du gøres det :)

Men det ser ud som om det kan være fordi datoen ikke tolkes som en date type når det kommer direkte fra form inputet. Så prøv evt. sådan her:

rs("dato") = Cdate(request.form("dato"))
Avatar billede jacand Nybegynder
26. februar 2005 - 12:43 #8
eagleeye> Ja det virker, og du får point, da det er noget letter at ændre kode til dit forslag, det kan jo gøres med en søg og erstat :-)
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