cx_Oracle.DatabaseError: ORA-01841: (全)年必须在-4713和+9999之间,而不是0。

我有一个Cx_Oracle插入查询,如下所示。

cur.execute("ALTER SESSION SET NLS_DATE_FORMAT = 'YYYYMMDD' ")

cur.execute("INSERT INTO table(col A,col B,col C,col D) values (:1,:2,:3,:4)",(lines['col A'],lines['col B'],lines['col C'],lines['col D']))

我的B&C列是Date数据类型,当我在这两列中都有一个值时,它们被成功加载。

但当我有 “NULL “或””时,它却向我抛出以下错误。

&gt.Cx_Oracle.DatabaseError cx_Oracle.DatabaseError: ORA-01841: (full) year must be between -4713 and +9999, and not be 0.

解决方案:

必须传递一个空值作为值 None 在Python中,你不能使用字符串值 “NULL”。你不能使用字符串值 “NULL”。你也可以经常使用空字符串,Oracle也将其视为null,但我会使用 None 如果可能的话。

如果你在SQL*Plus中进行以下操作,你就可以看到这一点。

alter session set nls_date_format = 'YYYYMMDD';
select to_date('') from dual;     /* works -- returns null */
select to_date('NULL') from dual; /* fails with the error you received */

你的例子中的所有代码都不存在。如果能展示一套完整的代码来证明这个问题,包括创建表的SQL–假设上面给出的提示还不够充分,那将会很有帮助。

给TA打赏
共{{data.count}}人
人已打赏
未分类

在Wordpress中使用PHP在一个页面上更改永久地址。

2022-9-8 2:45:39

未分类

谷歌云平台试用

2022-9-8 2:56:35

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索