一般情况下,oracle并不允许年份或月份或日期出现0的情况出现。
但在日期进行运算的情况下,该情况就可能出现,所以业务表格如果出现日期0000的话,也可以从这方面去检查业务SQL的产生是否合理。
下面举例说明:
1)SQL> select to_date('0000-00-00','yyyy-mm-dd') test_month from dual;
select to_date('0000-00-00','yyyy-mm-dd') test_month from dual
ORA-01843: 无效的月份
可见oracle默认并不支持0000的情况出现。
2)SQL> select to_date('0001-01-01','yyyy-mm-dd')-1 test from dual;
TEST
———–
0000/0/0
经过日期运算后就出现了date日期型出现0000/0/0的情况。
3)模拟业务表格出现非法日期的情况
SQL> create table tmonth as select to_date('0001-01-01','yyyy-mm-dd')-1 test from dual;
Table created
SQL> desc tmonth
Name Type Nullable Default Comments
—- —- ——– ——- ——–
TEST DATE Y
SQL> select * from tmonth;
TEST
———–
0000/0/0