Avatar billede axkris Nybegynder
30. september 2004 - 15:15 Der er 12 kommentarer og
1 løsning

out-of-range smalldatetime value

Hej alle

Er ved at konvertere fra mysql til mssql og så får jeg denne fejl:
Microsoft OLE DB Provider for SQL Server error '80040e07'
The conversion of char data type to smalldatetime data type resulted in an out-of-range smalldatetime value.

Ved:
strSQL = "SELECT COUNT(online_now) as counter FROM CHAT_MEMBERS where last_online <> NULL and last_online between '" & Date() & " 00:00:00' AND '" & Date() & " 23:59:59'"

Sql:
SELECT COUNT(online_now) as counter FROM CHAT_MEMBERS where last_online <> NULL and last_online between '30-09-2004 00:00:00' AND '30-09-2004 23:59:59'

MSSQL-DB:
Last_online ligger i "smalldatetime"
Avatar billede arne_v Ekspert
30. september 2004 - 15:18 #1
SMALLDATETIME indeholder ikke sekunder
Avatar billede axkris Nybegynder
30. september 2004 - 15:23 #2
Nu har jeg sat den over i datetime og den siger stadig det samme.
Avatar billede arne_v Ekspert
30. september 2004 - 15:31 #3
Så er det nok formatet der er galt.
Avatar billede axkris Nybegynder
30. september 2004 - 15:36 #4
Formateret: f.eks. "28-09-2004 10:23:00" men jeg bruger også NULL... kan det have nogen betydning?
Avatar billede zedios Nybegynder
30. september 2004 - 15:38 #5
I princippet kan problemet godt ligge i din WHERE del:
last_online between '30-09-2004 00:00:00' AND '30-09-2004 23:59:59'

Prøv at skifte den ud med (i det tilfælde at dine datoer bliver tolket som amerikanske når du bruge tal ..):
last_online between '30-sep-2004 00:00:00' AND '30-sep-2004 23:59:59'
Avatar billede axkris Nybegynder
30. september 2004 - 16:01 #6
Det virkede faktisk, men jeg vil gerne have det i det danske format. Og jeg har også sat det op i global.asa-filen:

Sub Session_OnStart
Session.LCID = 1030
setlocale("DA")
End Sub

Sub Session_OnEnd
End Sub

Så jeg forstår ikke, hvorfor jeg kører med amerikansk.
Avatar billede arne_v Ekspert
30. september 2004 - 16:03 #7
Hvad SQLServer bruger er vel total uafhængigt af din ASP opsætning.
Avatar billede axkris Nybegynder
30. september 2004 - 16:06 #8
Jeg ved ikke, hvad jeg bruger - ud over en delt mssql-server, som sikkert er af nye version. Hvad gør jeg?
Avatar billede axkris Nybegynder
30. september 2004 - 16:06 #9
nye = nyeste
Avatar billede axkris Nybegynder
30. september 2004 - 16:14 #10
Skal jeg tage kontakt med min webhotel-leverandør (som aministerer min mssql-database)? Eller kan jeg klare det selv?
Avatar billede veronica Nybegynder
03. oktober 2004 - 17:32 #11
Når du bruger datoer, skal du altid fortælle din SQL server hvilket datoformat du anvender.. prøv følgende:

SET dateformat dmy
SELECT COUNT(online_now) as counter FROM CHAT_MEMBERS where last_online <> NULL and last_online between '30-09-2004 00:00:00' AND '30-09-2004 23:59:59'
Avatar billede axkris Nybegynder
03. oktober 2004 - 20:54 #12
Takker - er det noget, som jeg skal gøre en gang for alle eller skal jeg gøre det hver gang jeg kører en side eller hver gang jeg kører en sql-sætning?
Avatar billede veronica Nybegynder
04. oktober 2004 - 21:01 #13
"set dateformat" skal sættes inden hver sql-sætning - jeg har endnu ikke fundet nogen smartere måde at gøre det på ..
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