我能够获得以下代码来处理SQL Developer,但是当我在BI Publisher中运行它时,我得到了ORA-1722:无效的数字
SELECT NVL(:PM_date_from,TO_DATE(TO_CHAR(SYSDATE -1,'yymm')||'01','yymmdd')) from_date_batch
,NVL(:PM_date_to,SYSDATE -1) to_date_batch
FROM DUAL
WHERE :PM_mode = 'B'
UNION ALL
SELECT NVL(:PM_date_from,TO_CHAR('1901-01-01','YYYY-MM-dd')) from_date_batch
,NVL(:PM_date_to,TO_CHAR('2036-01-01','YYYY-MM-dd')) to_date_batch
FROM DUAL
WHERE :PM_mode = 'A'
答案 0 :(得分:1)
也许SQL开发人员正在做一些假设,但在这个sql的第二部分,你将需要一个to_date函数,而不是to_char。
试试这个:
SELECT NVL(:PM_date_from,TO_DATE(TO_CHAR(SYSDATE -1,'yymm')||'01','yymmdd')) from_date_batch
,NVL(:PM_date_to,SYSDATE -1) to_date_batch
FROM DUAL
WHERE :PM_mode = 'B'
UNION ALL
SELECT NVL(:PM_date_from,TO_DATE('1901-01-01','YYYY-MM-dd')) from_date_batch
,NVL(:PM_date_to,TO_DATE('2036-01-01','YYYY-MM-dd')) to_date_batch
FROM DUAL
WHERE :PM_mode = 'A'