首页 > 解决方案 > 将 Numeric(19,0) 值转换为 DateTime

问题描述

我有一个数值 (19,0) 字段,其中包含值 1868570243000000。

数据库文档称该字段是“一个 EMR 生成的 ID,指示项目的签署时间”。

如何将其转换为 DateTime 值?

我已经尝试过这些方面的东西:

select dateadd(s, convert(bigint, 1868570243000) / 1000, convert(datetime, '1-1-1970 00:00:00'))

但我必须先删除 3 个零,然后它才能起作用。

并且...它给了我这个:2029 -03-18 23:17:23.000

当我期待这个时:2019 -03-18 23:17:23.000

月份、日期和时间是正确的 - 但它是未来 10 年!

提前致谢!!

标签: tsql

解决方案


当前日期的纪元时间是1553023530您的值1868570243(未来十年)。

您可能想在此处验证您的数据和/或方法 Epoch Converter

只是为了好玩,试试:

Select OddValue   = dateadd(SECOND, 1868570243000 / 1000, '1970-01-01 00:00:00')
      ,EpochValue = dateadd(SECOND, 1552951043000 / 1000, '1970-01-01 00:00:00')
      ,Delta      = (1868570243000 - 1552951043000) / 1000

你会得到

OddValue                  EpochValue                Delta
2029-03-18 23:17:23.000   2019-03-18 23:17:23.000   315619200.000000

推荐阅读