gpt4 book ai didi

sql - 在 T-SQL 中将特定 BigInt 转换为 DateTime

转载 作者:行者123 更新时间:2023-12-03 02:16:09 25 4
gpt4 key购买 nike

我有bigInt:635307578922100000,我需要将其转换为DateTime

我尝试了几种方法来做到这一点:

SELECT 
DATEADD(S, CONVERT(bigint,635307578922100000) / 1000, CONVERT(DATETIME, '1-1-1970 00:00:00'))

和:

SELECT 
DATEADD(ms, 635307578922100000 / 86400000, (635307578922100000 / 86400000) +25567)

虽然我发现上面的代码适用于 bigInts,例如:1283174502729,但使用我的 bigInt 时,出现以下错误:

Msg 8115 ... Arithmetic overflow error converting expression to data type datetime.

有人知道如何解决吗?

最佳答案

我认为它以刻度为单位(产量2014-03-18 16:44:52.210)。这是解决方案:

SELECT DATEADD(
MILLISECOND,
FLOOR(((635307578922100000-599266080000000000)%(10000000*60))/10000),
DATEADD(
MINUTE,
FLOOR((635307578922100000-599266080000000000)/(10000000*60)),
'01-01-1900'))

这个神奇值 599266080000000000 是在 PowerShell 中计算的 0001-01-01 和 1900-01-01 之间的刻度数,如下所示:

([DateTime]::Parse('1900-01-01')-[DateTime]::MinValue).Ticks

需要进行转换,因为 DATEADD 无法与 bigint 一起使用(需要 int)。 SQL Server DateTime 也限制为 1753 年 1 月 1 日。

关于sql - 在 T-SQL 中将特定 BigInt 转换为 DateTime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38583963/

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