使用 DATEADD 和 Bigint 克服算术溢出错误
在利用 SQL 将 JavaScript 日期转换为 SQL 日期时,处理过大的数据时会出现复杂性数据,导致算术溢出异常。要解决此问题,请考虑以下 SQL 语句:
DATEADD(MILLISECOND, cast(569337307200000 as bigint) % 1000, DATEADD(SECOND, cast(569337307200000 as bigint) / 1000, '19700101'))
将 DATEADD 分为两个阶段,从较大的时间单位(例如分钟)开始,然后减少到所需的毫秒,从而避免溢出问题。避免诉诸几个月或几周,因为这些涉及日历计算。
例如,考虑基于大电流持续时间(以毫秒为单位)计算开始时间:
-- two-step process to prevent overflow -- subtract minutes (60000ms) as a first step -- then subtract the remaining milliseconds DATEADD(ms, -large_duration_ms%60000, DATEADD(minute, -large_duration_ms/60000, GETDATE()))
通过分解DATEADD 分成更小的步长,我们可以有效处理大数据值并解决算术溢出错误。
以上是在 SQL 中使用带有大毫秒值的 DATEADD 时,如何防止算术溢出错误?的详细内容。更多信息请关注PHP中文网其他相关文章!