Avatar billede Slettet bruger
08. marts 2009 - 19:15 Der er 10 kommentarer og
1 løsning

Indsættelse af dato i datetime-felt

Hej

Jeg benytter mig af en MSSQL database til min ASP kode. Men når jeg prøver at indsætte en dato vha asp koden date(), i min mssql database, så ryger følgende dato ind i feltet:
07-07-1894

Men den korrekte dato er jo 08-03-2009, hvorfor gør den dette?

Jeg bruger følgende kode til at opdatere tabelrækken:

sql = "update " & newsTable & " set headline = '" & headline & "' , content = '" & content & "' , show = '" & show & "' , datetime = " & date() & " where id = " & id
conn.execute(sql)

p.s: Jeg kan sagtens ændre datoen i databasen, manuelt. Men det virker bare ikke med koden!
Avatar billede arne_v Ekspert
08. marts 2009 - 19:35 #1
Datoer skal indsættes i databaser i et bestemt format.

Du har to muigheder:

1) slå op i docs og se hvilket format SQLServer kræver og formater din dato til det format

2) bruge parameters og lad driveren bekymre sig om den slags
Avatar billede Slettet bruger
08. marts 2009 - 20:06 #2
parameters? hvilke kan dette være?
Avatar billede arne_v Ekspert
08. marts 2009 - 20:14 #3
Avatar billede vaco Nybegynder
09. marts 2009 - 13:27 #4
Hvis du selv kan bestemme formatet af dato strengen, så brug yyyy-mm-dd, da det er universelt!
Avatar billede arne_v Ekspert
10. marts 2009 - 01:33 #5
Det ville jeg ikke satse på.
Avatar billede vaco Nybegynder
10. marts 2009 - 08:04 #6
har aldrig haft problemer med det.... og jeg kører med systemer på flere lande/sprog/datoformat "yyyy-mm-dd".
Avatar billede vaco Nybegynder
10. marts 2009 - 08:20 #7
Kan tilføje at det hører til ISO8601

http://www.w3.org/TR/NOTE-datetime

Tror ikke at nogen af de større database leverandører bare ser bort fra en ISO standart!
Avatar billede senil Nybegynder
11. marts 2009 - 15:57 #8
hvis du altid vil have "nu" ind i feltet, så kan du erstatte Date() i Sql strengen.
sql = "update " & newsTable & " set headline = '" & headline & "' , content = '" & content & "' , show = '" & show & "' , datetime = getdate() "& " where id = " & id


Problemet kunne også være det at når du bruger date() (jeg ved ikke hvilke type den returnere), så sættes den ind som en streng. Det kunne være i formatet "man d.xx april 2007" eller 20-04-2009 eller 20/4/09... Og datetime (iøvrig er det ikke et pænt navn, du har en datatype af samme navn) kan ikke forstå dette, derfor vil den fejle, og indsætte computeres første system dato.
Avatar billede Slettet bruger
11. marts 2009 - 16:43 #9
har faktisk brugt getdate() funktionen, og ændret datetime navnet til timestamp istedet. det er dog bare ret trist at den åbenbart også VIL have tiden med, når jeg kun skal bruge datoen.. dog har jeg så bare brugt en array splitter ved " " og tager array(0) :)

senil > smid et svar, og du får points, da du kom med løsningen omkring getdate()
Avatar billede senil Nybegynder
12. marts 2009 - 13:44 #10
Hej Erizias

Når du skal hente din dato igen via select, bruges Select Convert(varchar, timestamp, 105) from...
Så fjerner man tiden fra datoen. Ellers opgrader til Sql2008, den har en ren dato type uden tid... det har vi savnet i laaaang tid.
Ang. Convert, så læs om den. Der er mange måder man kan få den formateret.
Avatar billede Slettet bruger
12. marts 2009 - 16:13 #11
Det vil jeg kigge på :) Tak.
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