时间:2023-10-31来源:系统城装机大师作者:佚名
Oracle使用range分区,根据时间列自动创建分区
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
-- Create table create table MY_TEST ( id NUMBER (12) not null , name VARCHAR2 (12) not null , today TIMESTAMP (6) default SYSDATE ) partition by range (today) interval(numtodsinterval(1, 'day' )) --月分区用month,年分区用year ( partition P_20230411 values less than (TO_DATE( '2023-04-12 00:00:00,"SYYYY-MM-DD HH24:MI:SS")) tablespace TB_SAMS pctfree 10 initrans 1 maxtrans 255 storage ( initial 1M next 1M minextents 1 maxextents unlimited ) ); - - Add comments to the table comment on table MY_TEST is ‘测试表' ; Add comments to the columns comment on column MY_TEST.id is ‘主键id '; comment on column MY_TEST.name is ‘名称' ; comment on column MY_TEST.today is ‘时间 '; - - Create/Recreate indexes create index MY_TEST_INDEX on MY_TEST (id) tablespace TB_SAMS pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K next 1M minextents 1 maxextents unlimited ); - -Grant/Revoke object privileges grant select on MY_TEST to DBVIEW; INSERT INTO MY_TEST VALUES (1,' xxc1 ',SYSDATE); INSERT INTO MY_TEST VALUES (2,' xxc2 '‚SYSDATE+1); INSERT INTO MY_TEST VAIUES (3,' xxc3',SYSDATE+2) ; |
测试效果
附录:oracle 根据日期自动生成分区表
oracle 根据日期自动生成分区表
1 2 3 4 5 6 7 8 9 |
CREATE TABLE my_table ( id NUMBER, name VARCHAR2(50), created_date DATE ) PARTITION BY RANGE (created_date) INTERVAL (NUMTODSINTERVAL(1, 'DAY' )) ( PARTITION p1 VALUES LESS THAN (TO_DATE( '2022-01-01' , 'YYYY-MM-DD' )) ); |
其中:
numtodsinterval(,) ,x是一个数字,c是一个字符串,
表明x的单位,这个函数把x转为interval day to second数据类型
常用的单位有 (‘day’,‘hour’,‘minute’,‘second’)
numtoyminterval 与numtodsinterval函数类似,将x转为interval year to month数据类型
常用的单位有(‘year’,‘month’)
格式:NumToYMInterval(n, interval_unit);
n: 数值类型
interval_unit: ‘YEAR’, ‘MONTH’ ,或其他可以转换成这两个值之一的表达式
NumToYMInterval(1, ‘YEAR’) :一年后的间隔
NumToYMInterval(-1, ‘MONTH’): 一个月前
小数会被计算成整数后,再做计算:
1 2 |
select sysdate + numtoyminterval(0.1, 'MONTH' ) from dual; 2023-03-21 09:54:37 |
如果执行含有函数的sql时报错:”INTERVAL YEAR TO MONTH literal“。不能与数值做运算。
常用用途:
做日期运算时,这个函数非常有用。例如:取一个月后的日期:
1 | select sysdate + NumToYMInterval(1, 'MONTH' ) from dual; |
到此这篇关于Oracle使用range分区并根据时间列自动创建分区的文章就介绍到这了
2023-10-31
Oracle如何编写一个sqlldr实例2023-10-31
Oracle的SQLLDR用法简介2023-10-31
Oracle中的高效SQL编写PARALLEL解析1.Oracle数据库系统结构概述 2.Oracle数据库存储结构 物理存储结构 控制文件 数据文件 重做日志文件 归档日志文件 Oracle数据库逻辑结构 数据块(Data Block) (盘)区(Extent) 段(Segment) 表空间(Tablespace) 本地管...
2023-10-31
windows下的Oracle19c 一、官网下载Oracle19c数据库 二、安装Oracle数据库 1.解压安装包 2.运行setup.exe安装 三、配置 四、安装完Oracle数据库,给scott用户解锁 1.解决Oracle数据库中没有scott账户的问题 2.给scott...
2023-10-31