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

UTC时间戳(BigInt类型1538397000000)转CST时间求助

将BigInt毫秒级UTC时间戳转换为CST datetime

你的思路方向是对的——先把毫秒级时间戳转成秒,再基于Unix纪元时间计算,但还差一步时区转换:CST(中国标准时间)比UTC快8小时,所以需要在UTC时间基础上加上这个偏移量。我来帮你完善这个SQL语句,同时提供几种更稳妥的写法:

方法1:基于秒级转换+手动时区偏移

这是在你原有语句基础上调整的版本,逻辑清晰易懂:

SELECT DATEADD(HOUR, 8, DATEADD(SECOND, CONVERT(BigInt, 1538397000000/1000), '1970-01-01 00:00:00')) AS CST_Datetime;
  • 第一步:1538397000000/1000 将毫秒级时间戳转为秒级(结果是1538397000)
  • 第二步:DATEADD(SECOND, ..., '1970-01-01 00:00:00') 得到UTC时间:2018-10-01 03:30:00
  • 第三步:DATEADD(HOUR, 8, ...) 加上8小时偏移,最终得到CST时间:2018-10-01 11:30:00

方法2:直接处理毫秒级时间戳

如果时间戳包含非整秒的毫秒数,直接处理毫秒会更准确,避免截断误差:

SELECT DATEADD(HOUR, 8, DATEADD(MILLISECOND, 1538397000000, '1970-01-01 00:00:00')) AS CST_Datetime;

方法3:使用AT TIME ZONE(SQL Server 2016+)

如果你的SQL Server版本支持AT TIME ZONE(2016及以上),推荐用这种更标准的时区转换方式,无需手动计算偏移量(虽然中国现在没有夏令时,但这种写法更符合时区规范):

SELECT 
    DATEADD(MILLISECOND, 1538397000000, '1970-01-01 00:00:00') AT TIME ZONE 'UTC' 
    AT TIME ZONE 'China Standard Time' AS CST_Datetime;

这个语句会先把时间戳转换为UTC datetime,再自动转换为中国标准时间,结果和前两种方法一致。

执行以上任意语句,你都会得到对应的CST时间:2018-10-01 11:30:00。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:30:47