此查询运行并且不返回任何行。
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。