SQL Server : 식을 데이터 형식 int로 변환하는 동안 산술 오버플로 오류가 발생했습니다.
이 오류가 발생합니다.
msg 8115, 레벨 16, 상태 2, 라인 18
식을 데이터 형식 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(billableDuration)
확인하려면 해당 줄에 주석을 달아보고 작동하는지 확인하십시오.
합이 최대값을 초과할 수 있습니다.int
그렇다면 다음으로 교체해 보십시오.SUM(CAST(billableDuration AS BIGINT))
.
매우 간단합니다.
Use COUNT_BIG(*) AS NumStreams
바꾸다SUM(billableDuration) AS NumSecondsDelivered
로.
sum(cast(billableDuration as bigint))
또는
sum(cast(billableDuration as numeric(12, 0)))
필요에 따라
Sum 식의 결과 유형은 사용된 데이터 유형과 동일합니다.오버플로 시 오류가 발생합니다.따라서 열을 더 큰 용량의 데이터 유형에 캐스팅한 다음 Sum 연산을 사용하면 됩니다.
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
따옴표로 묶은 텍스트가 정확한 텍스트라고 가정하면 이 열 중 하나는 원하는 수학적 계산을 수행할 수 없습니다.오류를 두 번 클릭하면 문제의 원인이 되는 행이 강조 표시됩니다(게시된 내용과 다를 경우 위에 없을 수 있음).변수를 사용하여 코드를 테스트했는데 문제가 없었습니다. 즉, 이 열 중 하나(자세한 정보는 알 수 없음)가 이 오류를 생성하고 있습니다.
이것이 진행되려면 당신의 표현 중 하나가 int로 캐스팅/변환되어야 하는데, 이것은 다음의 의미입니다.Arithmetic overflow error converting expression to data type int
.
제가 보기에 이 오류는 Null 값 열에 있는 데이터 유형 "INT"에서 발생했습니다.데이터 유형을 varchar로 변경하면 오류가 해결됩니다.
declare @d real
set @d=1.0;
select @d*40000*(192+2)*20000+150000
언급URL : https://stackoverflow.com/questions/15950580/sql-server-arithmetic-overflow-error-converting-expression-to-data-type-int
'programing' 카테고리의 다른 글
mongoose로 문서를 업데이트하고 저장하는 방법을 만드시겠습니까? (0) | 2023.06.22 |
---|---|
j개체에 등록된 이벤트 핸들러 찾기 (0) | 2023.06.22 |
SQL Server의 모든 데이터베이스에 있는 모든 테이블을 단일 결과 집합으로 나열하려면 어떻게 해야 합니까? (0) | 2023.06.22 |
SQL 서버에서 외부 키 제약 조건을 제거하는 방법은 무엇입니까? (0) | 2023.06.22 |
Microsoft SQL Server에서 데이터베이스 삭제 및 재생성 (0) | 2023.06.22 |