Oracle 从带有时区的时间戳中提取本地小时

Oracle 从带有时区的时间戳中提取本地小时,oracle,oracle12c,timestamp-with-timezone,Oracle,Oracle12c,Timestamp With Timezone,我试图从带有时区的时间戳中提取本地小时,但由于我不熟悉这种数据类型,因此得到了意想不到的结果 我希望下面每一行的输出都是22 with my_data as( select to_timestamp_tz(ts, 'yyyy-mm-dd hh24:mi:ss tzh:tzm') as tsz from (select '2017-12-07 22:23:24 +' || lpad(level, 2, '0') || ':00' as ts from

我试图从带有时区的时间戳中提取本地小时,但由于我不熟悉这种数据类型,因此得到了意想不到的结果

我希望下面每一行的输出都是22

with my_data as(
   select to_timestamp_tz(ts, 'yyyy-mm-dd hh24:mi:ss tzh:tzm') as tsz
     from (select '2017-12-07 22:23:24 +' || lpad(level, 2, '0') || ':00' as ts  
             from dual connect by level <= 10
          )       
)
select dbtimezone
      ,sessiontimezone
      ,tsz
      ,extract(hour from tsz)
  from my_data;
为什么会发生这种情况?我需要做什么才能从带有时区的时间戳中提取本地时间?

检查:

从具有时区值的日期时间提取时,返回的值以UTC为单位


如果您想获取本地时间,请使用“HH24”或从casttsz提取小时作为时间戳

在数据库中处理与时区相关的时态词需要经历多少困难,这真是令人惊讶。我希望有一天他们能把这一切简化。