将日期/时间从UTC转换为会话时区



我的程序接收UTC的时间戳,例如Tue, 31 May 2016 11:43:47 UTC。如何将它们转换为会话当前时区中的时间戳?

首先将字符串转换为带时区的时间戳(使用正确的函数(。要在本地(会话(时区中显示结果,请使用"AT local"子句。

select to_timestamp_tz('Tue, 31 May 2016 19:43:47 UTC', 
                                'Dy, dd Mon yyyy hh24:mi:ss tzr') at local from dual;

结果(使用我的前端设置显示带时区的时间戳-您的可能不同(:

31-MAY-16 02.43.47.000000000 PM AMERICA/CHICAGO

使用tz_offset函数获取会话时区的时区偏移量,然后使用from_tz函数将字符串转换为timestamp with time zone,并使用at time zone将其更改为使用会话时区。

select from_tz(to_timestamp('Tue, 31 May 2016 11:43:47 UTC'
                           ,'Dy, dd Mon yyyy hh24:mi:ss "UTC"')
              , 'UTC')
       at time zone tz_offset(sessiontimezone)
      ,sessiontimezone
from   dual;
31/05/2016 19:43:47.000000000 +08:00    Australia/Perth

最新更新