我的程序接收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