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