Oracle系統中,有如下幾個經常使用的日期函數:
1、Months_Between()
格式:Months_Between(startdate,enddate)
統計startdate到enddate之前總共有多少個月份;
用法:select months_between(to_date('1998-12-12','YYYY-MM-DD'),to_date('1988-12-12','YYYY-MM-DD')) from dual;--結果爲120,即10年;
在調用日期函數時,常常會因爲sql中的日期格式同系統格式不統一,倒是查詢報ora-01843錯誤,遇到這種問題,可以通過如下語句查詢DB默認的參數信息,或者直接使用日期函數to_date(date,formate)將日誌格式統一掉;
select * from nls_database_parameters
2、Add_Months()
格式:Add_months(startdate,months)
計算從startdate算起,第“mounts”月份後的日期;
用法:select sysdate from dual;--結果爲:2013/5/31 10:53:05
select add_months(sysdate,10) from dual;--結果爲:2014/3/31 10:53:55
3、Next_Day()
格式:Next_Day(date,nextweek)
計算從日期date起,下一個nextweek的日期;
用法:select next_day(to_date('1999-01-01','YYYY-MM-DD'),'星期一') from dual;--結果爲:1999/1/4
4、Last_Day()
格式:Last_Day(startday)
計算startday這個日期本月的最後一天的日期;
用法:select last_day(to_date('1999-01-01','YYYY-MM-DD')) from dual;--結果爲:1999/1/31
5、日期函數可以同日期或者數字進行加減運算:
日期+數字=日期
select to_date('1999-12-12','YYYY-MM-DD')-12 from dual;--結果爲:1999/11/30
日期-數字=日期
select to_date('1999-12-12','YYYY-MM-DD')+12 from dual;--結果爲:1999/12/24
日期-日期=數字
select to_date('1999-12-12','YYYY-MM-DD')-to_date('1999-12-01','YYYY-MM-DD') from dual;--結果爲:11