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.

 

posted @ 2017-11-02 15:09  巴啦啦大魔王  阅读(5562)  评论(0编辑  收藏  举报