在尝试转换varchar2列并使用BIP报告检索数据时出现Oracle错误



我们在oracle表中有列(字段)attribute14,数据类型为VARCHAR2,并以'20-MAY-22'(DD-MON-YY)格式存储日期。

我们需要在oracle fusion中开发一个BIP报告,并根据传入的参数日期得到输出&如果没有参数,则所有记录

但是我们都知道oracle数据集或BIP报告中的任何日期参数都将采用以下格式。

参数:'2021-12-05T19:00:00.000-05:00'

当参数被传递时,在尝试以下查询时出现以下错误:

select *
from   ab cet
where  1=1
AND    TO_DATE(cet. attribute14, DD-MON-YY NLS_date_language=AMERICAN")
IN ( nvl(:void_date.TO_DATE(cet.attribute14, DD-MON-YY.NLS_date_language=AMERICAN")))

传递参数值时出现以下错误:

Error: ORA-01847: day of the month must be between 1 and the last day of the month.

日期格式需要使用单引号。看来你的语言也不正确。详细信息可以在Oracle文档中阅读。下面是一个简单的例子。

SELECT TO_DATE(
'20-MAY-22',
'DD-MON-YY',
'NLS_DATE_LANGUAGE = American')
FROM DUAL;

https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions183.htm

最新更新