gpt4 book ai didi

sql - 如何在 SQL Server 中将 bigint(UNIX 时间戳)转换为日期时间?

转载 作者:行者123 更新时间:2023-12-01 16:55:19 25 4
gpt4 key购买 nike

如何在 SQL Server 中将 UNIX 时间戳 (bigint) 转换为 DateTime?

最佳答案

这对我有用:

Select
dateadd(S, [unixtime], '1970-01-01')
From [Table]

如果有人想知道为什么 1970-01-01,这被称为纪元时间

以下是维基百科的引用:

The number of seconds that have elapsed since 00:00:00 Coordinated Universal Time (UTC), Thursday, 1 January 1970,[1][note 1] not counting leap seconds.

2038 年问题

此外,DataAdd 函数采用 int 来表示要添加的秒数。因此,如果您尝试添加超过 2147483647 秒,您将收到算术溢出错误。要解决此问题,您可以将加法分为两次对 DateAdd 的调用,一次用于年份,一次用于剩余秒数。

Declare @t as bigint = 4147483645

Select (@t / @oneyear) -- Years to add
Select (@t % @oneyear) -- Remaining seconds to add

-- Get Date given a timestamp @t
Declare @oneyear as int = 31622400
Select DateAdd(SECOND, @t % @oneyear, DateAdd(YEAR, @t / @oneyear, '1970-01-01'))

这将允许您转换代表大于 2038 年的年份的时间戳。

关于sql - 如何在 SQL Server 中将 bigint(UNIX 时间戳)转换为日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2904256/

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