Bigint를 사용하여 DATEADD의 산술 오버플로 극복
큰 bigint 값과 함께 DATEADD를 사용할 때 산술 오버플로 오류가 발생하면 실망스러울 수 있습니다. 이 문제를 해결하기 위한 적절한 해결 방법은 초 또는 분과 같은 더 거친 시간 단위로 시작하여 여러 단계로 DATEADD 작업을 수행하는 것입니다.
발생한 오류에서 강조한 것처럼 너무 큰 bigint 값을 직접 추가하는 것입니다. 날짜 표현식은 산술 오버플로 오류를 유발할 수 있습니다. 이를 극복하기 위해 작업을 더 작은 단계로 나눌 수 있습니다.
예를 들어 전류 지속 시간이 큰 경우 시작 시간을 계산하려면 (밀리초):
DECLARE @large_duration_ms BIGINT = 569337307200000; -- Step 1: Subtract minutes (60000ms) -- (a) Determine number of minutes DECLARE @minutes_to_subtract BIGINT = @large_duration_ms / 60000; -- (b) Subtract minutes DECLARE @start_time_minutes DATETIME = DATEADD(MINUTE, -@minutes_to_subtract, GETDATE()); -- Step 2: Add remaining milliseconds DECLARE @milli_seconds_to_add BIGINT = @large_duration_ms % 60000; DECLARE @start_time_final DATETIME = DATEADD(MILLISECOND, @milli_seconds_to_add, @start_time_minutes); SELECT @start_time_final;
이 다단계 접근 방식을 사용하면 잠재적인 오버플로 오류를 방지하고 큰 bigint 값에서 날짜를 정확하게 계산할 수 있습니다.
위 내용은 큰 Bigint와 함께 DATEADD를 사용할 때 산술 오버플로 오류를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!