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