ORA-01861:文字与格式字符串不匹配,

时间:2014-11-14 06:18:50

标签: sql string oracle date ora-01861

目前我正在尝试将日期字段与以下声明进行比较

AND (AIA.INVOICE_DATE >= NVL(TO_DATE(:P_INV_DT_FROM,'DD-MON-YYYY'), '01-JAN-1900')  
OR AIA.INVOICE_DATE IS NULL)
AND (AIA.INVOICE_DATE <= NVL(TO_DATE(:P_INV_DT_TO,'DD-MON-YYYY'), '31-DEC-4712')  
OR AIA.INVOICE_DATE IS NULL)

但是,我收到以下错误,

  

ORA-01861:文字与格式字符串不匹配   01861. 00000 - &#34;文字与格式字符串&#34;

不匹配      

*原因:输入中的文字必须与文字中的文字长度相同              格式字符串(前导空格除外)。如果              &#34; FX&#34;修改器已经切换,文字必须完全匹配,              没有多余的空白。

     

*操作:更正格式字符串以匹配文字。

P.S:AIA.INVOICE_DATE是DD-MON-YYYY&#39;的形式。和p_inv_dt_from和p_inv_dt_to的格式为&#39; YYYY / MM / DD HH24:MM:SS&#39;

1 个答案:

答案 0 :(得分:2)

您需要明确标识&#39; 01-JAN-1900&#39;的格式。和&#39; 31-DEC-4712&#39; (即将它们包装在TO_DATE(&#39; 01-JAN-1900&#39;,&#39; DD-MON-YYYY&#39;))。否则,Oracle将尝试根据运行代码的任何人的环境会话设置将字符串转换为日期。例如,您的会话可能有NLS_DATE_FORMAT =&#39; MM / DD / YYYY&#39;,它与&01; 01-JAN-1900&#39;不兼容。