【问题标题】:converting timestamp to date yields wrong hour将时间戳转换为日期会产生错误的时间
【发布时间】:2020-01-17 02:40:13
【问题描述】:

我有这个时间戳值: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)。我怎样才能正确转换它?

【问题讨论】:

    标签: sql oracle epoch


    【解决方案1】:

    为了覆盖时区,请使用这个:

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

    【讨论】:

    • 非常感谢:SELECT (TIMESTAMP '1970-01-01 00:00:00 UTC' + 1568387621 * INTERVAL '1' SECOND) AT time zone 'Europe/Rome' FROM dual;工作正常
    【解决方案2】:

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

    在此处阅读第一个答案:

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

    【讨论】:

    • 这个问题与 SQL Server 无关;它被标记为 Oracle。
    • 我确认。它是 Oracle 而不是 Sql Server
    猜你喜欢
    • 2019-06-04
    • 1970-01-01
    • 2018-06-20
    • 2017-04-25
    • 2022-01-08
    • 1970-01-01
    相关资源
    最近更新 更多