使用 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中文网其他相关文章!