2017-03-01 7 views
0

私はSQL Developerの上で動作するために、次のコードを取得することができるが、私は、BI Publisherで、それを実行したときに、私はORA-1722を取得:無効な数BI PublisherのSQL SQL DeveloperのVS - 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の2番目の部分では、to_charの代わりにto_date関数が必要になります。

これを試してみてください:

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

答えが正しいとマークすることができます。 –

関連する問題