[英]cx_Oracle.DatabaseError: ORA-01843: not a valid month
select distinct sko.CONTENTId,
sko.HELPDESKID,
sko.SEGMENTID,
som.SUBMITTED_FOR_NAME,
sko.SUBMITTEDDATE,
to_date(sko.LASTMODIFIEDDATE, 'DD-MM-RR')
from sky_know_obj sko
join sky_object_mass som
on sko.CONTENTId = som.CONTENTId
where sko.LASTMODIFIEDDATE > date'2019-11-03'
and sko.LASTMODIFIEDDATE <= date'2019-12-03'
这是我的 oracle sql 查询。 我在 python 中运行它。 当我在 Oracle SQL Developer 中运行它时,它给出了结果,但是每当我尝试在 pycharm 中执行它时,就会发生以下错误:
cx_Oracle.DatabaseError: ORA-01843: 无效月份
当我跑
select * from nls_session_parameters;
这在oracle sql developer中然后它的显示
NLS_DATE_FORMAT = DD-MM-RR
当您将TO_DATE
应用于LASTMODIFIEDDATE
列并且它失败时,似乎并非所有值在该列中都有有效月份,这意味着它的数据类型不是date
而是varchar2
。
SQL Developer 不会返回所有行,而是返回前 50(左右)行。 如果您的查询扫描整个表或最初未显示的行,则它会失败。 尝试导航到 SQL Developer 中返回的记录集中的最后一行,看看会发生什么。
另一方面,如果列的数据类型是date
,那么不要to_date
它; 这样做没有意义。
此外,您不应该依赖数据库的设置。 控制您的数据,并且在表示date时不要指定string 。 使用日期文字,例如
where lastmodifieddate > date '2019-11-03' -- instead of '03-11-19'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.