使用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 值準確計算日期。
以上是將 DATEADD 與大型 Bigint 一起使用時如何避免算術溢出錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!