oracle對於時間間隔的處理

lihy114發表於2013-10-31
oracle在處理日期函式的時候有下面兩種表示方法:
1、select to_char((sysdate - interval '1' month),'yyyy-mm-dd') from dual;
2、select add_months(sysdate,-1) from dual;

第一種方法使用的是相隔的方法,oracle在處理的時候不進行邏輯判斷;比如今天是10月31號,計算一個月前的時間就會報錯,因為9月份沒有31號。但是如果使用內建函式add_months的話,內部就進行處理,會判斷出一個月前是9月30號

select to_char((sysdate - interval '1' month),'yyyy-mm-dd') from dual;

>[錯誤] 指令碼行:8-8 ---------------------------------------
 ORA-01839: 指定月份的日期無效
 指令碼行 8,語句行 1,列 24
 
 
select add_months(sysdate,-1) from dual

ADD_MONTHS(SYSDATE,-1)    
 ------------------------- 
 2013-9-30 下午4:18:24      

所以在計算時間相隔的時候,儘量使用內建函式add_months

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

相關文章