> 데이터 베이스 > MySQL 튜토리얼 > SQL Server에서 Bigint와 함께 DATEADD를 사용할 때 산술 오버플로 오류를 방지하는 방법은 무엇입니까?

SQL Server에서 Bigint와 함께 DATEADD를 사용할 때 산술 오버플로 오류를 방지하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-12-29 17:29:11
원래의
218명이 탐색했습니다.

How to Avoid Arithmetic Overflow Errors When Using DATEADD with Bigints in SQL Server?

DATEADD 및 Bigint를 사용하여 산술 오버플로 오류 처리

SQL Server의 DATEADD 함수는 날짜와 시간을 조작하는 강력한 도구입니다. 그러나 큰 정수로 작업할 때 산술 오버플로 오류가 발생할 수 있습니다.

문제:

사용자가 다음 쿼리를 사용하여 JavaScript 날짜를 SQL 날짜로 변환하려고 시도했습니다. :

DATEADD(MILLISECOND, cast(569337307200000 as bigint) % 1000, DATEADD(SECOND, cast(569337307200000 as bigint) / 1000, '19700101'))
로그인 후 복사

그러나 결과적으로 예외:

Arithmetic overflow error converting expression to data type int
로그인 후 복사

해결책:

오버플로 오류를 방지하려면 초와 같은 더 거친 시간 단위를 사용하여 DATEADD 작업을 더 작은 단계로 나누는 것이 좋습니다. 또는 분을 시작점으로 합니다. 이를 통해 시스템은 달력 계산을 보다 효율적으로 처리할 수 있습니다.

예를 들어 다음 쿼리는 밀리초 단위로 시작 시간을 계산합니다.

-- Avoid using weeks or months due to calendar irregularities

DATEADD(ms, -large_duration_ms%60000, DATEADD(minute, -large_duration_ms/60000, GETDATE()))
로그인 후 복사

이 접근 방식을 사용하면 산술 연산이 정수 데이터 형식의 한계 내에서 수행되어 오버플로 오류를 방지합니다.

위 내용은 SQL Server에서 Bigint와 함께 DATEADD를 사용할 때 산술 오버플로 오류를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿