Oracle

ORACLE DB 文字與格式字元串不匹配

  • February 18, 2020

我有這個錯誤:

ORA-01861: literal does not match format string
   01861. 00000 -  "literal does not match format string"
   *Cause:    Literals in the input must be the same length as literals in
              the format string (with the exception of leading whitespace).  If the
              "FX" modifier has been toggled on, the literal must match exactly,
              with no extra whitespace.
   *Action:   Correct the format string to match the literal.

它在一夜之間發生,數據庫配置沒有任何變化。sysdate 格式似乎有問題,但我不是 100% 確定。在我們的程序中有很多我們使用的地方to_date(to_char(sysdate, 'YYYY-MM-DD')) from dual實際上會中斷。有沒有辦法格式化 sysdate 以匹配以下表達式?

to_date(to_char(sysdate, 'YYYY-MM-DD')) from dual

首先將 sysdate 轉換為 char 類型,然後將其轉換回 date 類型而不指定格式字元串,這可能會或可能不會根據執行此程式碼的會話的設置工作。

這完全沒有必要,只需使用trunc(sysdate)刪除小時、分鐘和秒即可。

此外,如果您返回日期類型,則格式取決於nls_date_format變數,而不是生成日期值的 SQL。

引用自:https://dba.stackexchange.com/questions/259890