尝试使用时区将UNIX时间戳转换为Oracle时间戳。 期望看到不同的输出,但是datetime部分是相同的。
什么是拧?
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不进行调整吗?
答案 0 :(得分: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');
`