numtodsinterval and interval for oracle

今天無意間在itpub論壇發現了兩個很少用的時間間隔關鍵字:numtodsinterval or numtoyminterval、 interval。

感覺以後可能會用到,僅以此記錄下來。下面是簡要的介紹:

一、  語法:NUMTOYMINTERVAL ( n , 'char_expr' )
              char_expr:日期描述,可以是YEAR和MONTH;

  作用:可以將數字轉換成相應的日期單位時間

  比如:NUMTOYMINTERVAL ( 1, 'MONTH' ) 表示一個月,注意:此時跟add_months有點區別,後續有例子會講到。
              NUMTOYMINTERVAL ( 1, 'YEAR' ) 表示一年

 

對於day、hour、minute、second使用的是numtodsinterval函數,方法和numtoyminterval一樣。後面可以跟變量

二、interval後面只能用數字

 

下面是舉例:

SQL> select add_months (to_date('20110228','yyyymmdd'),1) from dual;

ADD_MONTH
---------
31-MAR-11

SQL>
SQL> select add_months(to_date('20110228','yyyymmdd'),-1) from  dual;

ADD_MONTH
---------
31-JAN-11

SQL>
SQL>
SQL> select to_date('2007-02-28','yyyy-mm-dd')+numtoyminterval (1,'month') from dual;

TO_DATE('
---------
28-MAR-07

SQL> select to_date('2007-02-28','yyyy-mm-dd')-numtoyminterval (1,'month') from dual;

TO_DATE('
---------
28-JAN-07


此時,注意跟add_months返回結果的區別。

 

SQL> select to_date('2007-02-28','yyyy-mm-dd')+numtodsinterval(1,'day') from dual;

TO_DATE('
---------
01-MAR-07


SQL>
SQL> select to_date('2007-02-28','yyyy-mm-dd')+interval '+3' hour from dual;

TO_DATE('
---------
28-FEB-07


SQL> select to_date('2007-02-28','yyyy-mm-dd')+interval '+1' month from dual;

TO_DATE('
---------
28-MAR-07

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章