簡體   English   中英

cx_Oracle.DatabaseError: ORA-01843: 無效月份

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM