oracle中interval函数和Interval-Partition分区
一、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.