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

未找到时区区域(Oracle 11g),oracle,oracle11g,Oracle,Oracle11g,有人知道为什么第一个查询会导致抛出此错误,而第二个查询会起作用吗 ORA-01882:未找到时区区域01882。00000-找不到时区区域%s 原因错误:选择时区的SYSTIMESTAMP从一些表t中选择t.TIME\U ZONE,其中t.TIME\U ZONE='America/Denver'和ROWNUM=1 来自双重 工作正常:在时区选择SYSTIMESTAMP从一些表格t中选择“美国/丹佛”,其中ROWNUM=1 来自双重 注意:这是在Oracle Database 11g 11.2.0

有人知道为什么第一个查询会导致抛出此错误,而第二个查询会起作用吗

ORA-01882:未找到时区区域01882。00000-找不到时区区域%s

原因错误:选择时区的SYSTIMESTAMP从一些表t中选择t.TIME\U ZONE,其中t.TIME\U ZONE='America/Denver'和ROWNUM=1 来自双重

工作正常:在时区选择SYSTIMESTAMP从一些表格t中选择“美国/丹佛”,其中ROWNUM=1 来自双重


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

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

不起作用:从DUAL中选择时区播放“America/Denver”的SYSTIMESTAMP作为NVARCHAR280

作品:从DUAL中选择时区的SYSTIMESTAMP,将“美国/丹佛”选为VARCHAR280


将t.时区包装到字符中修复了该问题。

。某个时区表的数据类型是什么?这只是一个varchar2吗?啊,我想这就是问题所在。出现错误的db在工作db Yup中的数据类型为NVARCHAR2 vs VARCHAR2,强制转换为VARCHAR2修复了该错误。谢谢你的指点!选择时区的SYSTIMESTAMP从一些表t中选择cast.TIME\u ZONE作为VARCHAR280,其中t.TIME\u ZONE='America/Denver'和ROWNUM=1来自DUAL