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: 文字与格式字符串 01861 不匹配。00000 - “文字与格式字符串不匹配”

*原因:输入中的文字必须与格式字符串中的文字长度相同(前导空格除外)。如果启用了“FX”修饰符,则文字必须完全匹配,没有多余的空格。

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

PS:AIA.INVOICE_DATE 的格式为 'DD-MON-YYYY' 和 p_inv_dt_from 和 p_inv_dt_to 的格式为 'YYYY/MM/DD HH24:MM:SS'

4

1 回答 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' 不兼容。

于 2014-11-14T06:23:50.953 回答