oracle系統函數(日期函數)


oracle系統函數(日期函數)

調用日期函數時,首先要明確兩個概念,時間戳和日期是不同的,日期中包括年月日但不包括小時分鍾秒,時間戳包括年月日小時分鍾秒。在oracle中,一般情況下,函數中包含date字符的和日期有關,包含timestamp的函數和時間戳有關(時間戳可以理解為時間)。oracle中,日期一般以天為基本單位,時間相減時結果單位為天,時間與數字相加時,默認加對應數字的天數。

一、調用時無參無括號時間函數

1.返回系統當前日期sysdate

  --該函數返回值沒有時間戳

select sysdate from dual;

2.返回會話中的日期和時間localtimestamp

  --不包括時區

select localtimestamp from dual;

3.返回會話時區中的當前日期和時間current_timestamp

  --包括時區

select current_timestamp from dual;

4.返回當前會話時區中的當前日期current_date

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;

 二、調用時有括號的日期函數

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM