当前位置: 首页 > 知识库问答 >
问题:

cx_oracle.databaseError:ORA-01843:不是有效月份

庄弘业
2023-03-14
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

共有1个答案

凌炜
2023-03-14

当您将to_date应用于lastmodifieddate列而失败时,似乎并非所有值在该列中都有有效的月份,这意味着它的数据类型不是date,而是varchar2

SQL Developer并不返回所有行,而是返回前50行(大约50行)。如果查询扫描整个表或最初未显示的行,那么它将失败。尝试在SQL Developer中导航到返回记录集中的最后一行,以查看发生了什么。

另一方面,如果列的数据类型是date,那么不要to_date;那样做没有意义。

此外,您不应该依赖数据库的设置。控制您的数据,不要在表示日期时指定字符串。使用日期字面,例如。

where lastmodifieddate > date '2019-11-03' -- instead of '03-11-19'
 类似资料:
  • 我为PHP更改了OCI8版本,由于该查询不起作用: 我收到这个消息: 消息:oci_execute():ora-01843:不是有效月份 它与Toad一起用于Oracle11。你有什么解决办法吗? 谢谢:)

  • 我有一个在PL-SQL视图中使用的查询。该视图包含一个名为Jde_date的函数,该函数采用Julian格式的date参数并将其转换为Gregorian格式,它工作得很好。 查询如下: 但是当我发布报告时,我得到错误ORA-01843:不是一个有效的月份。 我该怎么解决?

  • 在浏览结构和XML时,我注意到我的日期是字符串格式的: 元素name=“datetime”value=“datetime”label=“datetime”datatype=“xsd:string”breakorder=“ascending”fieldorder=“3” 所以我删除了to_char以获得日期格式 如何解决此问题? 编辑:列的格式,时间戳,格式是CHAR(14)值的例子是2020070

  • 当我通过liquibase运行它时,我得到错误ORA-01843:不是一个有效的月份。 怎么可能?

  • 我遇到以下错误 ORA-01843:不是有效月份 底层视图