将时间戳转换为日期会产生错误的小时

时间:2019-09-16 09:20:18

标签: sql oracle epoch

我有这个时间戳值:1568387621 我需要将其转换为日期。

我尝试过类似的事情:

SELECT TO_TIMESTAMP('19700101','yyyymmdd') + ((1568387621/1000)/24/60/60)
FROM dual;

但这不起作用。

我的时区是欧洲/罗马。

一些转化网站告诉我转化后的价值是:2019-09-13 17:13:41 相反,在db的最佳情况下,我获得:2019-09-13 15:13:41

哪个小时是正确的(15或17)。如何正确转换?

2 个答案:

答案 0 :(得分:3)

要覆盖时区,请使用以下一个:

(TIMESTAMP '1970-01-01 00:00:00 UTC' + 1568387621 * INTERVAL '1' SECOND) AT 'Europe/Rome'

答案 1 :(得分:-2)

SQL Server的TIMESTAMP数据类型与日期和时间无关!

在这里阅读第一个答案:

How to convert SQL Server's timestamp column to datetime format