gpt4 book ai didi

SQL:将 DATEADD 与 bigint 结合使用

转载 作者:行者123 更新时间:2023-12-03 13:43:59 25 4
gpt4 key购买 nike

我有一些 SQL 可以将 javascript 日期转换为 SQL 日期,效果很好。但是,我遇到了一些过大并导致异常的数据:

Arithmetic overflow error converting expression to data type int



这是有问题的SQL:
  DATEADD(MILLISECOND, cast(569337307200000 as bigint) % 1000, DATEADD(SECOND, cast(569337307200000 as bigint) / 1000, '19700101'))

我在 SQL Server 2008 上运行它。

最佳答案

只做有问题的DATEADD分为两个步骤,从粗略的时间单位(秒、分钟、小时等)开始,然后再回到细粒度的时间单位。

避免进入周和月的级别,因为这需要实际的日历计算,我们希望系统能够处理。

下面的示例需要计算给定(可能)大电流持续时间(以毫秒为单位)的开始时间。

-- large durations can overflow the integer argument needed for DATEADD

-- so do as two steps subtracting minutes (60000ms) and then remaining milliseconds.

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

关于SQL:将 DATEADD 与 bigint 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15030474/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com