Oracle的0000/0/0日期產生

newknight發表於2013-11-28

一般情況下,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

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10009036/viewspace-1061459/,如需轉載,請註明出處,否則將追究法律責任。

相關文章