【发布时间】:2018-12-19 06:43:14
【问题描述】:
SQL> select to_date(' ','YYYYMMDD') from dual;
ERROR at line 1:
ORA-01841: (full) year must be between -4713 and +9999, not be 0
SQL> select * from dual where to_date(' ','YYYYMMDD') = '19960512' or 1 = 2;
ERROR at line 1:
ORA-01841: (full) year must be between -4713 and +9999, not be 0
SQL> select * from dual where to_date(' ','YYYYMMDD') = '19960512' or 1 = 1;
Success.
在前两个语句中,我们将空格传递给 TO_DATE 函数,这会给出预期的错误。 但是
现在在第三个语句中,我们将空格传递给 TO_DATE oracle 函数,这是不允许的。但它仍然成功执行。
为什么?
在实际代码中,我可能会从变量中传递空格,而 OR 部分可能是也可能不是。
谁能解释一下这种行为以及如何处理以获取错误?
P.S - 我在 Oracle 12g EE 上
【问题讨论】: