Avatar billede tblaster Nybegynder
25. september 2003 - 12:18 Der er 8 kommentarer og
1 løsning

Problem med at samligne en dato med sql servere

Hvorfor får jeg denne fejl når jeg køre min asp kode:

Microsoft OLE DB Provider for SQL Server error '80040e07'

The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.

Det er en dato den prøver at samligne og den har værdien som følgende:
'09-25-2003 12:12:39'

Det underligste er at jeg kun har problemet når jeg køer min kode. Hvis jeg smider min sql direkte ind i sql serveren så får jeg ingen fejl.

Ændre jeg datoen til:
'25-09-2003 12:12:39'

Ja så er der ingen fejl i min kode men så får jeg fejl når jeg smider sql'en direkte ind i sql serveren.

Koderne kan fint afvikles på en andne computer hvilket tyder på at der er en indstilling på min computer. Men hvor kan jeg have angivet et andet sprog eller noget. Jeg skal gerne have det så den kan køre på min uden at skulle ændre i mine koder.
Avatar billede bennytordrup Nybegynder
25. september 2003 - 12:21 #1
Hvis du skal sammenligne datofelter i SQL Server med datokonstanter, så formatter datoerne efter ISO-formatet:

yyyymmdd hh:mm:ss.sss

Din dato skal du formattere således:

20030925 12:12:39.000


ISO-formatet genkendes altid uanset SQL Serverens sprog-indstillinger.
Avatar billede bennytordrup Nybegynder
25. september 2003 - 12:23 #2
Hvad har du gang i?
Avatar billede tblaster Nybegynder
25. september 2003 - 12:24 #3
Da koderne køre på en anden maskine og på min server skal jeg ikke ind og ændre i kodern. Jeg skal have ændret i min lokal opsætning så jeg udgår at få fejl! Det må være en dato felt jeg skal rette et eller andet sted i min computer. Jeg kan ikke finde et sted at gøre det under iis'en. Jeg har checket min computers lokale sprog konfigurationer under xp og de stemmer overens med den anden computer hvor koderne fint afvikles.
Avatar billede bennytordrup Nybegynder
25. september 2003 - 12:26 #4
Hvordan bliver datokonstanten dannet?
Avatar billede tblaster Nybegynder
25. september 2003 - 12:29 #5
Det er denne der virke i mine kode på min maskine. Den virker ikke direkte i sql serveren: (den skulle helst ikke virke):
Dato = now()

Det er denne der virker på serveren, den anden computer og direkte i sql serveren:
Dato = now()
arr = Split(Dato, "-",-1,1)
Dato = arr(1) & "-" & arr(0) & "-" & arr(2)
Avatar billede tblaster Nybegynder
25. september 2003 - 12:38 #6
Jeg har ikke brug for tiden så følgende er nok:
Dato = FormatDateTime (now(), vbshortDate)
arr = Split(Dato, "-",-1,1)
Dato = arr(1) & "-" & arr(0) & "-" & arr(2)

Men det gør ingen forskel ... fejlen får jeg stadig
Avatar billede janus_007 Nybegynder
25. september 2003 - 13:31 #7
tblaster-> du kan da ikke bare sidde og splitte datoen op på den måde!

hvor ved du fra at arr(1) er måned?, arr(0) dag? osv... (whatever, afhænger netop af locale) hint: brug evt. session.lcid


Brug hellere datepart så får du altid det korrekte og så vil du heller ikke opleve de fejl fra server til server!
Avatar billede tblaster Nybegynder
25. september 2003 - 13:33 #8
hvordan virker datepart?
Avatar billede janus_007 Nybegynder
25. september 2003 - 13:43 #9
Tror du det er en gavebod for 15point *S*

Søg på www.devguru.com (den kender du vel ved asp)
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