首页 文章

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

提问于
浏览
0

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

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:literal与格式字符串01861不匹配.00000 - “literal与格式字符串不匹配”*原因:输入中的文字长度必须与格式字符串中的文字长度相同(前导空格除外) . 如果已打开“FX”修饰符,则文字必须完全匹配,没有额外的空格 . *操作:更正格式字符串以匹配文字 .

P.S:AIA.INVOICE_DATE是'DD-MON-YYYY'的形式,p_inv_dt_from和p_inv_dt_to的形式为'YYYY / MM / DD HH24:MM:SS'

1 回答

  • 2

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

相关问题