首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SQL查询返回ORA-01805:日期/时间操作错误中可能出现的错误

SQL查询返回ORA-01805:日期/时间操作错误中可能出现的错误
EN

Stack Overflow用户
提问于 2022-06-13 14:31:02
回答 1查看 211关注 0票数 0

我试图在python代码中执行一个SQL查询,并获得

ORA-01805:可能的日期/时间操作错误。

我该如何解决这个问题?我已经下载了最新的甲骨文即时客户端file..how,我应该更改日期吗?

EN

回答 1

Stack Overflow用户

发布于 2022-06-13 21:12:28

值得阅读Oracle的“数据库全球化支持指南”。然后,您将被告知,对于时区感知客户端,您需要考虑一些细微差别。只有一些客户端可以连接不同版本的时区文件--它适用于Oracle数据库11g及更高版本,以及诸如OCI、JDBC、Pro*C和SQL*Plus等客户端。其他客户:

应该假定这样的客户端不能使用与客户端不同的时区文件的数据库服务器进行操作。

一般来说,OCI是在混合模式下支持的,因此cx_oracle应该可以工作。但是..。我遇到了Oracle11g和cx_oracle (不记得版本)的问题。解决方案是以与数据库完全匹配的版本安装即时客户端。当我在11.2版本而不是12.2版本中安装即时客户端时,错误消失了。

因此,请查找数据库版本:

代码语言:javascript
运行
复制
select * from v$version;

找到匹配的即时客户端。应该管用的。

可以使用该查询检查数据库的时区文件版本:

代码语言:javascript
运行
复制
-- user SYS or anyone with SYSDBA privilege can query that view:
select *
from v$timezone_file;

-- example output:
FILENAME         VERSION
timezlrg_14.dat  14

然后您可以检查即时客户端版本(在Linux上):

代码语言:javascript
运行
复制
# your instant client path could be different
$ cd /usr/lib/oracle/12.2/client64/bin
$  ./genezi -v
Client Shared Library 64-bit - 12.2.0.1.0

System name:    Linux
Release:        4.15.0-121-generic
Version:        #123-Ubuntu SMP Mon Oct 5 16:16:40 UTC 2020
Machine:        x86_64

Operating in Instant Client mode.

Small timezone file = /usr/lib/oracle/12.2/oracore/zoneinfo/timezone_26.dat
Large timezone file = /usr/lib/oracle/12.2/oracore/zoneinfo/timezlrg_26.dat

在上面的例子中,数据库在版本14中有时区文件,客户端在版本26中有时区文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72604577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档