未找到时区区域(Oracle 11g)

时间:2018-06-01 14:17:23

标签: oracle oracle11g

有人知道为什么第一个查询会导致抛出此错误而第二个查询有效吗?

ORA-01882:未找到时区区域01882. 00000 - "未找到时区区域%s"

  1. 导致错误:在时区选择SYSTIMESTAMP(选择 t.TIME_ZONE 从某个时间开始t.TIME_ZONE =' America / Denver&#39 ;和ROWNUM = 1) 来自DUAL

  2. 正确工作:在时区选择SYSTIMESTAMP(选择' America / Denver' FROM SOME_TABLE t WHERE ROWNUM = 1) 来自DUAL

  3. 注意:这是在Oracle Database 11g 11.2.0.4.0版 - 64位db上运行的。我已验证两个查询在具有相同数据库版本的另一个数据库上正确。不确定还有什么可能导致这种情况。

1 个答案:

答案 0 :(得分:1)

总结根本原因,它与t.TIME_ZONE的数据类型(NVARCHAR2)有关。这是一个示例,显示11g中不支持NVARCHAR2时区名称:

不起作用:按时间区域选择SYSTIMESTAMP(' America / Denver' as NVARCHAR2 (80))FROM DUAL

工作:在时区CAST选择SYSTIMESTAMP(' America / Denver' as VARCHAR2 (80))FROM DUAL

在TO_CHAR()中包装t.TIME_ZONE解决了问题。