oracle系統函數(日期函數)數據庫
調用日期函數時,首先要明確兩個概念,時間戳和日期是不一樣的,日期中包括年月日但不包括小時分鐘秒,時間戳包括年月日小時分鐘秒。在oracle中,通常狀況下,函數中包含date字符的和日期有關,包含timestamp的函數和時間戳有關(時間戳能夠理解爲時間)。oracle中,日期通常以天爲基本單位,時間相減時結果單位爲天,時間與數字相加時,默認加對應數字的天數。session
1、調用時無參無括號時間函數oracle
1.返回系統當前日期sysdate函數
--該函數返回值沒有時間戳spa
select sysdate from dual;
2.返回會話中的日期和時間localtimestampcode
--不包括時區blog
select localtimestamp from dual;
3.返回會話時區中的當前日期和時間current_timestampio
--包括時區ast
select current_timestamp from dual;
4.返回當前會話時區中的當前日期current_dateclass
select current_date from dual;
5.返回數據庫時區設置dbtimezone
select dbtimezone from dual;
6.返回當前會話時區sessiontimezone
select sessiontimezone from dual;
7.變更日期時間數值interval
--設置數值表明秒,分,小時,天,月,年
例如:
interval '1' second 1秒
interval '1' minute 1分
interval '1' hour 1小時
interval '1' day 1天(系統默認)
interval '1' month 1月
interval '1' year 1年
select trunc(sysdate)+(interval '1' second),--加1s trunc(sysdate)+(interval '1' hour),--加1個小時 trunc(sysdate)+(interval '1' day),--加1天 trunc(sysdate)+1--加1天 from dual;
2、調用時有括號的日期函數
1.返回指定月數後的日期add_months()
select add_months(sysdate,3) from dual;
等價於
select trunc(sysdate)+interval '3' month from dual;
2.返回本月最後一天的日期last_day()
select last_day(sysdate) from dual;
返回本月第一天
select trunc(sysdate,'month') from dual;
3.返回2個日期間隔月數month_between()
select months_between(sysdate,to_date('2015-09-01','YYYY-MM-DD')) from dual;
4.四捨五入後的期間第一天round()
select sysdate, round(sysdate),--最近0點日期 round(sysdate,'day'),--最近星期日 round(sysdate,'month'),--最近月初 round(sysdate,'q'),--最近季出日期 round(sysdate,'year')--最近年初日期 from dual;
5.返回日期所在期間的第一天trunc()
select trunc(sysdate),--今天日期 trunc(sysdate,'day'),--本週星期日,等價於trunc(sysdate,'D')和trunc(sysdate,'d') trunc(sysdate,'month'),--本月初,若trunc(sysdate,'M')和trunc(sysdate,'m')則執行出錯 trunc(sysdate,'q'),--本季初日期 trunc(sysdate,'year')--本年初日期,等價於trunc(sysdate,'Y')和trunc(sysdate,'y') from dual;
6.返回下週某一天的日期next_day(),能夠返回下週的週一到週日
select sysdate, next_day(sysdate,'星期一'),--返回下週星期一 next_day(sysdate,'星期二')--返回下週星期二 from dual;
7.提取時間日期中數據extract()
--提取小時,分鐘,秒時須要加上timestamp
select extract(minute from timestamp '2015-2-16 2:38:40'),--timestamp時間戳 extract(hour from timestamp '2015-2-16 2:38:40'), --extract(hour from timestamp(sysdate)),錯誤 extract(hour from localtimestamp),--返回值錯誤 extract(hour from current_timestamp), extract(day from sysdate),--日 extract(month from sysdate), extract(year from sysdate) from dual;
總結:關於日期的函數仍是挺多的,可是經常使用的通常爲sysdate,localtimestramp,trunc,interval和extract,重點掌握這些應該足夠了,其餘不經常使用的能夠用的時候再查找。