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.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM