今天无意间在http://blog.csdn.net/ningjieshuijing/article/details/6530687发现了两个很少用的时间间隔关键字:numtodsinterval 、 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