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

ant*_*oho 0 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;
Run Code Online (Sandbox Code Playgroud)

产出: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;
Run Code Online (Sandbox Code Playgroud)

产出:27-FEB-08 09.21.56 .656000000 AM -07:00

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

Wer*_*eit 7

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');
Run Code Online (Sandbox Code Playgroud)

`