このクエリは実行され、行は返されません。
SELECT DISTINCT TO_CHAR(START_DATE,'MM/DD/YYYY'),
TO_CHAR(END_DATE, 'MM/DD/YYYY')
FROM
(
SELECT START_DATE, END_DATE, END_DATE - START_DATE
FROM
(
SELECT TO_DATE(SUBSTR(B, 1, 10), 'MM/DD/YYYY') START_DATE,
TO_DATE(SUBSTR(B, 14, 10), 'MM/DD/YYYY') END_DATE
FROM (SELECT 'test date' b from dual)
)
WHERE END_DATE - START_DATE != 6
)
変換エラーのため、この小さな断片は実行に失敗します。 [1]: ORA-01858: 数値が必要な場所に数値以外の文字が見つかりました
SELECT TO_DATE(SUBSTR(B, 1, 10), 'MM/DD/YYYY') START_DATE,
TO_DATE(SUBSTR(B, 14, 10), 'MM/DD/YYYY') END_DATE
FROM (SELECT 'test date' b from dual)
ここでの私の予想は、変換エラーによって Oracle 例外が発生し、プログラムが失敗することでした。わからないことや、正しく考えていないことがあります。
誰かがこれで私の鼻を正しい方向に向けることができますか?
ありがとう。悪の。
編集 - NULL は to_date とは異なる方法で処理されます。 Oracle: to_date で NULL 値を回避する
編集 - 計画
3 SELECT STATEMENT ALL_ROWS
Cost: 3 Bytes: 0 Cardinality: 1
Partition #: 0
2 FILTER
Cost: 0 Bytes: 0 Cardinality: 0
Partition #: 0
1 FAST DUAL
Cost: 2 Bytes: 0 Cardinality: 1
Partition #: 0
編集 - 私は10gを実行しています。