今天無意間在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