Avatar billede tsunami Nybegynder
13. februar 2007 - 20:30 Der er 3 kommentarer og
1 løsning

SQL og dato problem

Jeg har flyttet en database fra en server over til en anden og nu kan jeg ikke få det til at virke, tror det er fordi det er det forkerte charset som der bliver brugt men håber der er nogle der kan hjælpe... SQL strengen ser sådan her ud når den bliver sendt til serveren

SELECT CAST(SUBSTRING(start, 3, 2) + '/' + SUBSTRING(start, 1, 2) + '/' + CAST({ fn YEAR(GETDATE()) } AS nvarchar) AS datetime) AS startdato, GETDATE() AS aktueldato, * FROM perioder WHERE (CAST(SUBSTRING(start, 3, 2) + '/' + SUBSTRING(start, 1, 2) + '/' + CAST({ fn YEAR(GETDATE())} + yy AS nvarchar) AS datetime) < GETDATE()) AND (CAST(SUBSTRING(slut, 3, 2) + '/' + SUBSTRING(slut, 1, 2) + '/' + CAST({ fn YEAR(GETDATE()) } AS nvarchar) AS datetime) >= GETDATE()-1) AND (medarbejdergruppe = '03')

og selve koden til generering

dd=day(now)
if day(now)<10 then
  dd="0" & dd
end if
mm=month(now)
if month(now)<10 then
  mm="0" & mm
end if

yy=year(now)
yy1=year(now)
yy2=year(now)


datostreng1 = "'" & yy1 & "-' + SUBSTRING(start, 3, LEN(start)) + '-' + SUBSTRING(start, 1, 2) "

strSql =""
strSql = strSql & " SELECT CAST(SUBSTRING(start, 3, 2) + '/' + SUBSTRING(start, 1, 2) + '/' + CAST({ fn YEAR(GETDATE()) } AS nvarchar) AS datetime) AS startdato, "
strSql = strSql & " GETDATE() AS aktueldato, * "
strSql = strSql & " FROM        perioder "
strSql = strSql & " WHERE (CAST(SUBSTRING(start, 3, 2) + '/' + SUBSTRING(start, 1, 2) + '/' + CAST({ fn YEAR(GETDATE())} + yy AS nvarchar) AS datetime) < GETDATE()) "
strSql = strSql & " AND  (CAST(SUBSTRING(slut, 3, 2) + '/' + SUBSTRING(slut, 1, 2) + '/' +  CAST({ fn YEAR(GETDATE()) } AS nvarchar) AS datetime) >= GETDATE()-1) "
strSql = strSql & " AND (medarbejdergruppe = '03')"

Det eneste der er forskel på SQL serveren er vist Server collation som er SQL_Latin1_General_CP1_CI_AS istedet for Danish_Norwegian_CI_AS som den var før. tør ikke at lave det om da der er andre ting i SQL serveren som kunne være vigtige og som pludselig ikke virker... men nogen der fortælle hvordan jeg kan få det til at virke igen igennem ASP koden?
Avatar billede tsunami Nybegynder
13. februar 2007 - 20:53 #1
Kan dog også være versionen 8.0.194-8.0.2039

Kan bare ikke se hvad der kan være for at den kommer med fejlen

Microsoft OLE DB Provider for SQL Server (0x80040E57)
Arithmetic overflow error converting expression to data type datetime.
Avatar billede thesurfer Nybegynder
13. februar 2007 - 20:59 #2
Har du overvejet at søge på det, på nettet?

Google ( http://www.google.com ) giver nogle svar:

http://www.google.com/search?q=Arithmetic+overflow+error+converting+expression+to+data+type+datetime

De første svar (jeg har ikke læse dem alle) forslår at du har sat datoen forkert op, i forhold til hvad SQL-serveren forventer..

SQL-serveren har engelsk dato-format, som standard.. og du bruger garanteret dansk dato-format..
Avatar billede tsunami Nybegynder
13. februar 2007 - 23:37 #3
Fandt det selv... var fordi brugeren på SQL serveren havde Dansk Dato format på den jeg kopierede den over fra og Engelsk på den som jeg kopierede til /doh :)
Avatar billede thesurfer Nybegynder
14. februar 2007 - 01:41 #4
Hmmm... Jeg fortæller dig at der er problemer med datoen (sprog på server), og så skriver du det igen, og snupper pointsne?

Hvor er logikken i det?
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