1.numtodsinterval函数
NUMTODSINTERVAL converts a number to
an INTERVAL DAY TO SECOND data type.
返回值:
INTERVAL DAY TO SECOND
语法:
NUMTODSINTERVAL(n, 'interval_unit')
参数:
n可以是任意数字
interval_unit指定n表示的是天还是时或分或秒,一般为下面的值:
DAY
HOUR
MINUTE
SECOND
示列:
SQL> select numtodsinterval(23,'hour')
from dual;
NUMTODSINTERVAL(23,'HOUR')
---------------------------------------------------------------------------
+000000000 23:00:00.000000000
SQL> select
sysdate,sysdate+numtodsinterval(30,'day') from dual;
SYSDATE SYSDATE+NUMTODSINTE
------------------- -------------------
2016-07-19 19:49:19 2016-08-18 19:49:19
2.numtoyminterval函数
NUMTOYMINTERVAL converts a number to
an INTERVAL YEAR TO MONTH data type.
返回值:
INTERVAL YEAR TO MONTH
语法:
NUMTOYMINTERVAL(n, 'interval_unit')
参数:
n可以是任意数据
interval_unit指定n表示的是年还是月,需要是下面的值:
YEAR
MONTH
示列:
SQL> select
sysdate,sysdate+numtoyminterval(10,'month') from dual;
SYSDATE SYSDATE+NUMTOYMINTE
------------------- -------------------
2016-07-19 19:51:46 2017-05-19 19:51:46
SQL> select
sysdate,sysdate+numtoyminterval(10,'year') from dual;
SYSDATE SYSDATE+NUMTOYMINTE
------------------- -------------------
2016-07-19 19:52:08 2026-07-19 19:52:08
3.interval函数
----计算时间差
INTERVAL
YEAR TO MONTH数据类型
语法:
INTERVAL 'integer [- integer]' {YEAR |
MONTH} [(precision)][TO {YEAR | MONTH}]
----该数据类型常用来表示一段时间差,注意时间差只精确到年和月.
precision为年或月的精确域,有效范围是0到9,默认值为2.
INTERVAL DAY TO SECOND数据类型
语法:
INTERVAL '{ integer | integer time_expr |
time_expr }'
{ { DAY | HOUR | MINUTE } [ (
leading_precision ) ]
| SECOND [ ( leading_precision [,
fractional_seconds_precision ] ) ] }
[ TO { DAY | HOUR | MINUTE | SECOND [
(fractional_seconds_precision) ] } ]
----leading_precision值的范围是0到9,默认是2.
time_expr的格式为:HH[:MI[:SS[.n]]] or MI[:SS[.n]] or SS[.n], n表示微秒.
4.分区表自动创建分区
----11g新特性,可以利用numtoyminterval/numtodsinterval自动创建分区
在创建分区表时,指定分区的列后,需要指定interval(numtoyminterval(1,'month')),可以是month、year、day,然后在指定第一个默认的分区,后面的分区会自动创建
示列:
create table p_test
( id
int,
update_time date)
partition by range (update_time)
interval(numtoyminterval(1,'month'))
(partition p_test_part1 values less than
(to_date('2016-06-01','yyyy-mm-dd')));
reference