11. december 2002 - 11:33Der er
6 kommentarer og 1 løsning
Arithmetic overflow error converting expression to data type int.
Jeg har følgende sql-sætning i server 7.0:
<b>select sum(outbound) from be_general where day>='2002-11-1' and day<='2002-11-12';</b>
Sætningen giver overflow fordi resultatet af summen ikke kan ligge i en 4 bytes integer. Resultatet er iøvrigt 2.237.476.000. Det får man hvis man lige dividerer med 1000 først.
Jeg har forsøgt med CAST og CONVERT og konverterer/caste resultatet til en bigint, men får altid svaret, at den ikke er iblandt systemtyperne.
Derefter har jeg så forsøgt at ændre datatypen på 'outbound' feltet til en datatype som kan rumme tallet, men der findes ikke rigtig nogen.
Hvad skal jeg gøre for at få svaret 2.237.476.000 ud af sql-sætningen?
Hvis du sammenligner med dato-konstanter på den måde, du gør, så brug ISO formatet for datoer:
select sum(cast (outbound as numeric)) from be_general where day>='20021101' and day<='20021112'
ISO-formatet genkendes altid af SQL Server uanset sprogindstillinger på serveren. Med dit datoformat kunne du risikere at rende ind i problemer med datoer efter den 12. i måneden.
Problemet ville være, at du angiver datoer på formatet yyyy-mm-dd. Det vil fejle, hvis serveren forventer at få datoen på formatet yyyy-dd-mm, og datoerne er efter den 12.
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.