首页 > 解决方案 > 将长 java 日期时间转换为 SQL Server 日期时间

问题描述

我有1579537505834很长,代表一个日期和时间2020-01-20 17:25:05.833

我尝试将其转换datetime为 SQL Server 的值:

select 
    convert(datetime, (((1579537505834) / (1000.0 * 60.0 * 60.0 * 24.0)) +  25567))

但结果是:2020-01-20 16:25:05.833: 1 小时的错误。

谢谢

编辑:问题是 +1 时区!我能怎么做?

EDIT2:使用 PostgreSQL,我没有这个问题

SELECT to_timestamp (1579537505834 / 1000)

EDIT3:解决方案

select convert(datetime,(((cast(1579537505834 as bigint)) / (1000.0 * 60.0 * 60.0 * 24.0)) + 25567 ))+cast(DateDiff(Hour, GetUTCDate(), GetDate()) as numeric(35,15))/24

工作!谢谢大家!

标签: sql-serverdatetime

解决方案


我认为另一种计算新日期的方法会更快,但松散的 ms 是:

SELECT DATEADD(s, 1579537505834.0 / 1000, '1970-01-01')

可以更换

CONVERT(datetime, (((1579537505834) / (1000.0 * 60.0 * 60.0 * 24.0)) +  25567))

推荐阅读