在Oracle 11g中,系統提供了許多用於處理日期和時間的函數,經過這些函數能夠實現計算須要的特定日期和時間,經常使用的日期和時間函數如表7.3所示。
表7.3經常使用日期時間類函數
日期類型的默認格式是「日-月-年」即「DD-MON-YY」,其中「DD」表示兩位數字的「日」,MON表示3位數字的「月份」。YY表示兩位數字的「年份」,例如,「01-10月-11」表示2011年10月1日。下面看幾個經常使用函數的具體應用。markdown
1.SYSDATE()函數
若是想要系統當前的日期,能夠使用SYSDATE()函數,代碼以下。ide
selectsysdateas系統日期from dual;
經過SQL Developer輸入,查詢結果如圖7.14所示。
圖7.14 得到系統當前的日期函數
2.ADD_MONTHS(d,i)函數
該函數返回日期d加上i個月以後的結果。其中,i爲任意整數。3d
實例10 使用ADD_MONTHS()函數計算日期值 code
使用ADD_MONTHS()函數計算三個月以後的日期和三個月以前的日期,代碼以下:blog
01 selectsysdate當前日期, 02 ADD_MONTHS(sysdate,3) 三個月以後的日期, 03 ADD_MONTHS(sysdate,-3) 三個月以後的日期 04 from dual;
經過SQL Developer輸入,查詢結果如圖7.15所示。
圖7.15 使用ADD_MONTHS()函數計算日期值it
經過圖7.15可知,當前日期爲「2017年5月13日」,那麼三個月以前的日期就是「2017年8月13日」。若是ADD_MONTHS()函數的第二個參數爲負數,則代表計算的是當前日期以前的日期值。
常見錯誤:使用「日期 + 數字」的形式來計算以前或以後的日期。
若是要計算三個月以後的日期,使用「sysdate + 90」也是表示三個月以後的日期,爲何要使用ADD_MONTHS()函數來計算日期值呢?
這是由於在日期中存在閏年的狀況,若是使用日期加減數字的方式則沒法進行準確的日期操做。class