SQL Server : Arithmetic overflow error converting expression to data type int

标签 sql sql-server tsql

我收到此错误

msg 8115, level 16, state 2, line 18
Arithmetic overflow error converting expression to data type int.

使用此 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   

最佳答案

问题出在SUM(bilableDuration)上吗?要找出答案,请尝试注释掉该行并查看它是否有效。

总和可能超过int最大值。如果是这样,请尝试将其替换为 SUM(CAST(bilableDuration AS BIGINT))

关于SQL Server : Arithmetic overflow error converting expression to data type int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15950580/

相关文章:

mysql - 将数据从 MySQL 提取到 MS SQL 时无法按计算的日期时间进行过滤

java - Hibernate将sql保存到文件

mysql - 使用 ESCAPE 关键字进行 SQL 转义 - 如果转义字符出现在 LIKE 值中会怎样

sql - 将另一个表中的数据放入检查约束

java - SimpleJdbcCall : get result of Microsoft/Sybase stored procedure call

sql - 根据条件用上一行的值更新列

c++ - 使用 ADO/OLEDB 批量插入/加载

MySQL选择没有重复uid的前十条记录

sql-server - SQL Server 2008 不显示默认实例名称

sql - 需要帮助编写在(sql server 2008 和另外 3 个文件中执行 sql 脚本)的 bat 文件。?