Oracle使用range分区并根据时间列自动创建分区
Oracle使用range分区,根据时间列自动创建分区
-- 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 根据日期自动生成分区表
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’): 一个月前
小数会被计算成整数后,再做计算:
select sysdate + numtoyminterval(0.1, 'MONTH') from dual; 2023-03-21 09:54:37
如果执行含有函数的sql时报错:”INTERVAL YEAR TO MONTH literal“。不能与数值做运算。
常用用途:
做日期运算时,这个函数非常有用。例如:取一个月后的日期:
select sysdate + NumToYMInterval(1, 'MONTH') from dual;
到此这篇关于Oracle使用range分区并根据时间列自动创建分区的文章就介绍到这了,更多相关Oracle自动创建分区内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
oracle数据库删除数据Delete语句和Truncate语句的使用比较
oracle当表中的数据不需要时,则应该删除该数据并释放所占用的空间,删除表中的数据可以使用Delete语句或者Truncate语句,下面分别介绍2012-09-09
解决The Network Adapter could not establish the conn问题
这篇文章主要介绍了解决The Network Adapter could not establish the conn问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-02-02
Oracle中的for update 和 for update now
在Oracle数据库中,FOR UPDATE和FOR UPDATE NOWAIT是两种用于行级锁定的SQL子句,它们通常用在SELECT语句中以确保数据的一致性和隔离性,本文介绍Oracle中的for update 和 for update nowait的区别和用法,感兴趣的朋友跟随小编一起看看吧2024-03-03


最新评论