【发布时间】:2020-01-20 16:44:06
【问题描述】:
我有1579537505834 long ,代表2020-01-20 17:25:05.833 的日期和时间。
我尝试将其转换为 SQL Server 的 datetime 值:
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)
编辑3: 解决办法
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
工作!谢谢大家!
【问题讨论】:
-
在线转换器也将此数字转换为 16:25。你确定现在是 17:25?
-
是的,够了,但我又做了一些测试.. sqlserver中的转换功能看起来对吗?
-
问题是添加时区:GMT:2020 年 1 月 20 日星期一 16:25:05.834 您的时区:lunedì 20 gennaio 2020 17:25:05.834 GMT+01:00
-
夏令时和/或时区是否会导致此问题?
-
我不知道这是否有帮助,但您可以通过以下方式获取时区偏移量:Select DateDiff(Hour, GetUTCDate(), GetDate())
标签: sql-server datetime