22. juli 2002 - 22:24Der er
5 kommentarer og 1 løsning
Datetime problem med Sql Server
Hej alle. Jeg prøver at oprette en ny record i min lokale SQL Server DB i min .NET side. Den får en gyldig dato (eks: "17-07-2002 12:14:42"), men returnerer følgende fejl: "The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value. The statement has been terminated". Hvis jeg prøver at lave en helt forkert værdi i stedet for en date får jeg en anden fejlbesked. Det underlige er, at jeg ikke har problemet på den rigtige web server, det er kun lokalt jeg har problemet :/.
Noget kunne tyde på, at de to servere har forskellige opsætninger for locale. Du bør i hvert fald selv sætte session.LCID for dit script (traditionel asp, jeg har ikke forstand på .net endnu)
Begge servere har de samme DB indstillinger, og serveropsætning er den samme (mht LCID). Hvad der endnu mere undrer mig, er at jeg godt kan indsætte den problematiske dato i sql serveren via Enterprise Manager, altså er datoen på ingen måde forkert. Nogen andre forslag?
odegård -> Det har jeg gjort nu, og har delvis fået løst problemet. Problemet forsvandt fra min lokale maskine efter at fodre den med engelsk formateret dato (Selvom en "getDate()" i SQL serveren returnerer en DK dato?). Men på webserveren forsvandt problemet først da jeg gav den en DK dato (igen returnerede getDate() også en DK dato).
Altså er problemet væk, men jeg undrer mig meget over hvad der gør forskellen, i og med begge SQL Servere er sat ens op, og begge forventer en DK dato.
Det er vist nok din SQL-driver der skal sættes op tror jeg (ikke helt sikker). Jeg har ingen problemer med at benytte danske datoer på en SQL-server (der kører på en engelsk Win2000 med opsætning af danske datoer). Aner ikke hvad jeg har gjort for at den gør dette. Det gør den bare. Jeg har dog set på andre programmer der benytter samme DB, at de nogle gange får datoen i engelsk format, hvorfor det vel må være et klient-problem.
Det er en problemstilling jeg har hygget mig en del med i tidens løb. Min løsning er at sætte session.LCID=1033 (amerikansk), så indbyggede funktioner som datepart kan finde ud af, hvad der er dag og hvad der er måned. Dermed bliver problemstillingen reduceret til konvertering fra/til lokalt datoformat ifm med user input og formatering ved præsentation.
Desuden, husk at datoer i sql-statements skal være i amerikansk format, uanset alt muligt andet.
Synes godt om
Ny brugerNybegynder
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.