oracle11g分区表按时间自动创建

来源:互联网 发布:阿里双十一数据分析 编辑:程序博客网 时间:2024/05/16 06:05
   首先来介绍下numtodsinterval和numtoyminterval两个函数。   numtoyminterval和numtoyminterval是日期转换函数,作用:可以将数字转换成相应的日期单位时间   语法:NUMTOYMINTERVAL ( n , 'char_expr' )   char_expr:日期描述,可以是YEAR和MONTH。   通常当我们使用add_month添加月时,如果输入是本月月底的日期,那么得到的也是月底的日期,比如add_month(to_date('2007-02-28','yyyy-mm-dd'),1)得到的就会是'2007-03-31',而不是'2007-03-28'。   此时,如果使用的是to_date('2007-02-28','yyyy-mm-dd')+numtoyminterval(1,'month'),那么得到的就是'2007-03-28'。   numtodsinterval的用法和numtoyminterval一样只是他的参数为day、hour、minute、second。   Oracle 11g之前,维护分区需要手工。11g之后使用interval来实现自动扩展分区,简化了维护。   根据年: INTERVAL(NUMTOYMINTERVAL(1,'YEAR'))   根据月: INTERVAL(NUMTOYMINTERVAL(1,'MONTH'))   根据天: INTERVAL(NUMTODSINTERVAL(1,'DAY'))   根据时分秒: NUMTODSINTERVAL( n, { 'DAY'|'HOUR'|'MINUTE'|'SECOND'})
create table tablenames (fid number not null PRIMARY KEY, sdate date,addr varchar2(1000))partition by range (sdate) interval (numtoyMinterval (1,'MONTH'))(partition ptablenames values less than (to_date('2017-02-13', 'yyyy-mm-dd')))
   创建完毕后通过如下sql进行查询分区:
select partition_name from user_tab_partitions where table_name='tablenames';
   新增不同年份的数据,就会发现会按照年自动生成对应分区。 

参考:http://www.itpub.net/forum.php?mod=viewthread&tid=2058328&page=1
http://www.cnblogs.com/javaMan/p/3978412.html
http://www.cnblogs.com/flowerszhong/p/4535206.html

0 0
原创粉丝点击