transact queries from for examples ejemplos sql sql-server tsql

queries - where condition sql server



SQL Server: error de desbordamiento aritmético que convierte la expresión al tipo de datos int (5)

¿Es el problema con SUM(billableDuration) ? Para averiguarlo, intente comentar esa línea y ver si funciona.

Podría ser que la suma esté superando el máximo int . Si es así, intente reemplazarlo con SUM(CAST(billableDuration AS BIGINT)) .

Estoy recibiendo este error

msg 8115, nivel 16, estado 2, línea 18
Error de desbordamiento aritmético que convierte la expresión al tipo de datos int.

con esta consulta SQL

DECLARE @year VARCHAR(4); DECLARE @month VARCHAR(2); -- START OF CONFIGURATION SECTION -- THIS IS THE ONLY SECTION THAT SHOULD BE MODIFIED -- SET THE YEAR AND MONTH PARAMETERS SET @year = ''2013''; SET @month = ''3''; -- 1 = January.... 12 = Decemeber. -- END OF CONFIGURATION SECTION DECLARE @startDate DATE DECLARE @endDate DATE SET @startDate = @year + ''-'' + @month + ''-01 00:00:00''; SET @endDate = DATEADD(MONTH, 1, @startDate); SELECT DATEPART(YEAR, dateTimeStamp) AS [Year] , DATEPART(MONTH, dateTimeStamp) AS [Month] , COUNT(*) AS NumStreams , [platform] AS [Platform] , deliverableName AS [Deliverable Name] , SUM(billableDuration) AS NumSecondsDelivered FROM DeliveryTransactions WHERE dateTimeStamp >= @startDate AND dateTimeStamp < @endDate GROUP BY DATEPART(YEAR, dateTimeStamp) , DATEPART(MONTH, dateTimeStamp) , [platform] , deliverableName ORDER BY [platform] , DATEPART(YEAR, dateTimeStamp) , DATEPART(MONTH, dateTimeStamp) , deliverableName


Cambiar SUM(billableDuration) AS NumSecondsDelivered to

sum(cast(billableDuration as bigint)) o

sum(cast(billableDuration as numeric(12, 0))) acuerdo a su necesidad.

El tipo resultante de la expresión de suma es el mismo que el tipo de datos utilizado. Lanza un error en el momento de desbordamiento. Por lo tanto, convertir la columna en un tipo de datos de mayor capacidad y luego utilizar la operación Suma funciona bien.


Por mi parte, este error provino del tipo de datos "INT" en la columna de valores nulos. El error se resuelve simplemente cambiando los datos de un tipo a varchar.


SELECT DATEPART(YEAR, dateTimeStamp) AS [Year] , DATEPART(MONTH, dateTimeStamp) AS [Month] , COUNT(*) AS NumStreams , [platform] AS [Platform] , deliverableName AS [Deliverable Name] , SUM(billableDuration) AS NumSecondsDelivered

Suponiendo que su texto citado sea el texto exacto, una de estas columnas no puede hacer los cálculos matemáticos que desea. Haga doble clic en el error y se resaltará la línea que está causando los problemas (si es diferente de lo que está publicado, puede que no esté arriba); Probé su código con las variables y no hubo ningún problema, lo que significa que una de estas columnas (de la que no sabemos más información específica) está creando este error.

Una de sus expresiones necesita ser convertida / convertida en un int para que esto pase, que es el significado de Arithmetic overflow error converting expression to data type int .


declare @d real set @d=1.0; select @d*40000*(192+2)*20000+150000