oracle系統函數(日期函數)

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,重點掌握這些應該足夠了,其餘不經常使用的能夠用的時候再查找。

相關文章
相關標籤/搜索