一、interval函数--将数值按标准换算为日期
1.
select interval '1234' year(5) from dual;--注意year时默认精度为2
+01234-00 --1234年不足的位数用0补上
select interval '123' month from dual;--这里为啥用默认值2可以呢?因为输出是xx年xx月,如果年份的值为个位数使用month(1)都可以
+10-03 --10年3个月
注意:
天数比较特殊
select interval '123' day(3) from dual;
+123 00:00:00 --这里因为每个月天数不同,每年天数也不尽相同,所以天数就不会自动转换了
2.numtodsinterval、numtodsinterval函数
select
numtoyminterval(123, 'year'), --numtodsinterval只转换year,month
numtoyminterval(123, 'month'),
numtodsinterval(123, 'day'),--numtodsinterval只转换day,hour,moinut,second
numtodsinterval(123, 'hour'),
numtodsinterval(123, 'minute'),
numtodsinterval(123, 'second')
from dual;
+000000123-00 +000000010-03 +000000123 00:00:00.000000000 +000000005 03:00:00.000000000 +000000000 02:03:00.000000000 +000000000 00:02:03.000000000
二、interval分区--设置自动分区
以scott的emp数据为参考
create table emp1
(
EMPNO NUMBER(4) not null,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2)
)
partition by range(sal)
interval (1000)
store in (users, system)
(
partition sp1 values less than (1500),
partition sp2 values less than (3000),
partition sp3 values less than (5000)
);
emp表中数据有sal=5000的值
查看表分区情况
select table_name, partition_name, high_value from user_tab_partitions where table_name='EMP1';
TABLE_NAME PARTITION_NAME HIGH_VALUE
EPM1 SP1 1500
EPM1 SP1 3000
EPM1 SP1 5000
EPM1 SYS_P21 6000
最后一条是自动新增的分区名为SYS_P21,最大值为6000.