You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中Unix时间戳转换为何需指定'1-1-1970 05:30:00'?

Unix时间戳转SQL Server datetime的起始日期疑问解答

核心原因:Unix时间戳的基准与时区转换

Unix时间戳的本质是从Unix纪元(UTC标准时间1970年1月1日00:00:00)开始累计的秒数(你的输入是毫秒级戳,所以要除以1000转成秒)。

你用的'1-1-1970 05:30:00',其实是Unix纪元转换为**印度标准时间(IST)**的结果——IST时区比UTC快5小时30分,所以UTC的1970-01-01 00:00:00对应IST的1970-01-01 05:30:00。

为什么修改年月日会出错?

Unix时间戳的计算严格绑定「1970-01-01 00:00:00 UTC」这个基准点,如果你修改起始日期的年、月、日,等于把计算的基准从Unix纪元改成了其他时间点,自然会偏离正确的转换结果。

比如你的例子:

--Unix timestamps input (1679722784640) to get Date and Time 2023-03-25 11:09:44
select dateadd(s, convert(bigint, 1679722784640) / 1000, convert(datetime, '1-1-1970 05:30:00'))

这里用IST的纪元起始点,是为了直接得到IST时区的datetime结果。如果要转成UTC时间,只需要把起始日期改成'1970-01-01 00:00:00'即可。

内容的提问来源于stack exchange,提问作者Manikandan R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 17:12:08