微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

oracle11g分区表按时间自动创建

转自:https://blog.csdn.net/rznice/article/details/55048876

首先来介绍下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';

新增不同年份的数据,就会发现会按照年自动生成对应分区。
删除分区请查看: https://blog.csdn.net/u013490585/article/details/79948987

原文地址:https://www.jb51.cc/oracle/206158.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐