Oracle将UNIX时间戳转换为带时区的时间戳

Oracle将UNIX时间戳转换为带时区的时间戳,oracle,timestamp,unix-timestamp,timestamp-with-timezone,Oracle,Timestamp,Unix Timestamp,Timestamp With Timezone,正在尝试将UNIX时间戳转换为带时区的Oracle时间戳。 希望看到不同的输出,但是datetime部分是相同的 拧什么 select (timestamp '1970-01-01 00:00:00' + numtodsinterval(1204104116656/1000,'second')) at time zone tz_offset('EST') from dual; 输出:2008年2月27日09.21.56.656000000上午-05:00 select (timestamp '

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

拧什么

select (timestamp '1970-01-01 00:00:00' + numtodsinterval(1204104116656/1000,'second')) at time zone tz_offset('EST') from dual;
输出:2008年2月27日09.21.56.656000000上午-05:00

select (timestamp '1970-01-01 00:00:00' + numtodsinterval(1204104116656/1000,'second')) at time zone tz_offset('PST') from dual;
输出:2008年2月27日09.21.56.656000000上午-07:00


为什么日期/时间部分是相同的?Oracle不进行调整吗?

Unix时间戳来自
1970-01-01 00:00:00 UTC
。当您只需执行
时间戳'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