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

SQL Server中如何将数值类型的时间戳转换为datetime类型

SQL Server 13位毫秒级Unix时间戳转datetime方案

你提到的1628864262422属于毫秒级Unix时间戳,代表从UTC基准时间1970-01-01 00:00:00到目标时间经过的总毫秒数,可按照以下方案转换:

全版本兼容转换方案

所有SQL Server版本都可以用拆分秒+毫秒的方式实现,避免数值溢出:

SELECT DATEADD(
    ms, 
    CAST(1628864262422 AS BIGINT) % 1000, -- 取余数得到不足1秒的毫秒部分
    DATEADD(
        s, 
        CAST(1628864262422 AS BIGINT) / 1000, -- 取整得到总秒数
        '1970-01-01 00:00:00'
    )
) AS 转换后时间

如果需要转换为本地时区时间,可补充时区偏移处理:

SELECT SWITCHOFFSET(
    DATEADD(ms, CAST(1628864262422 AS BIGINT) % 1000, DATEADD(s, CAST(1628864262422 AS BIGINT) / 1000, '1970-01-01 00:00:00')),
    DATEPART(TZOFFSET, SYSDATETIMEOFFSET())
) AS 本地时区时间

SQL Server 2016及以上简化方案

2016版本新增支持大整数偏移的DATEADD_BIG函数,可直接计算毫秒偏移:

SELECT DATEADD_BIG(ms, 1628864262422, '1970-01-01 00:00:00') AS 转换后时间

注意事项

  • 如果时间戳存储在BIGINT类型的字段中,可省略显式CAST步骤直接引用字段
  • 转换结果默认是UTC时间,可根据业务需求自行调整时区偏移
  • 转换后精度和SQL Server原生datetime类型一致,为3.33毫秒,无业务级误差

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:39:01