2017-03-01 72 views
0

我能够得到以下代码在SQL Developer的工作,但是当我在BI发布服务器上运行它,我得到ORA-1722:无效号码BI Publisher的SQL VS SQL开发者 - 的Varchar日期字段

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' 
+0

谢谢你的工作 –

+0

你可以标记答案正确,如果它的工作。 –