【问题标题】:Oracle conversion of UNIX timestamp to timestamp with time zoneOracle 将 UNIX 时间戳转换为带时区的时间戳
【发布时间】:2015-10-07 15:17:44
【问题描述】:

尝试将 UNIX 时间戳转换为带有时区的 Oracle 时间戳。 期望看到不同的输出,但日期时间部分是相同的。

怎么回事?

select (timestamp '1970-01-01 00:00:00' + numtodsinterval(1204104116656/1000,'second')) at time zone tz_offset('EST') from dual;

输出:27-FEB-08 09.21.56.656000000 AM -05:00

select (timestamp '1970-01-01 00:00:00' + numtodsinterval(1204104116656/1000,'second')) at time zone tz_offset('PST') from dual;

输出:27-FEB-08 09.21.56.656000000 AM -07:00

为什么日期/时间部分是一样的? Oracle不做调整吗?

【问题讨论】:

    标签: oracle timestamp unix-timestamp timestamp-with-timezone


    【解决方案1】:

    Unix 时间戳来自1970-01-01 00:00:00 UTC。当您只做timestamp '1970-01-01 00:00:00' 时,Oracle 会采用您当地的时区!

    你必须这样做:

    (TIMESTAMP '1970-01-01 00:00:00' AT TIME ZONE 'UTC' +     
        numtodsinterval(1204104116656/1000,'second')) AT time zone tz_offset('PST');
    

    `

    【讨论】:

    • 哇,是的。作品!谢谢!甚至没有想过将 unix 时间戳转换为 UTC
    猜你喜欢
    • 2017-04-25
    • 2013-05-20
    • 2012-08-19
    • 2013-04-07
    • 2019-03-24
    • 2018-12-18
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    相关资源
    最近更新 更多