首页 >数据库 >mysql教程 >在 SQL Server 2008 中转换大 JavaScript 日期时如何避免 DATEADD 溢出错误?

在 SQL Server 2008 中转换大 JavaScript 日期时如何避免 DATEADD 溢出错误?

Susan Sarandon
Susan Sarandon原创
2024-12-17 22:40:11424浏览

How to Avoid DATEADD Overflow Errors When Converting Large JavaScript Dates in SQL Server 2008?

大整数的 DATEADD 溢出

SQL Server 2008 用户在使用以下命令将大 JavaScript 日期转换为 SQL 日期时可能会遇到“算术溢出错误” DATEADD 函数。当值超过整数数据类型的最大大小时,就会发生错误。

有问题的查询:

DATEADD(MILLISECOND, cast(569337307200000 as bigint) % 1000, DATEADD(SECOND, cast(569337307200000 as bigint) / 1000, '19700101'))

要解决此问题,请将 DATEADD 分解为更小的增量。从较大的时间单位(秒、分钟或小时)开始,然后按剩余的毫秒进行调整。避免使用周或月,因为这涉及复杂的日历计算。

考虑以下示例:

-- Handle large durations by subtracting minutes and then remaining milliseconds.

DATEADD(ms, -large_duration_ms%60000, DATEADD(minute, -large_duration_ms/60000, GETDATE()))

此技术允许计算持续时间极长的开始时间,而不会出现溢出错误。

以上是在 SQL Server 2008 中转换大 JavaScript 日期时如何避免 DATEADD 溢出错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn