Oracle按日周月年自动分区

目录

1、分区键

2、初始分区

3、周月年自动分区

4、按日自动分区表建表语句


与普通建表语句相比,分区表多了一些分区信息;

1、分区键

以下面销售明细表为例,以data_dt为分区键,NUMTODSINTERVAL(1, 'day') 按日分区

PARTITION BY RANGE (data_dt) INTERVAL (NUMTODSINTERVAL(1, 'day'))

2、初始分区

设置part_t01为初始的分区,可以根据实际需求设置初始分区的边界。

(PARTITION part_t01 VALUES LESS THAN(to_date('2020-01-01', 'yyyy-mm-dd')))

3、周月年自动分区

按其他周月年分区需要 替换 标黄部分。(前缀英文不一样注意区分)

PARTITION BY RANGE (data_dt) INTERVAL (NUMTODSINTERVAL(1, 'day'))

--按日分区 NUMTODSINTERVAL(1, 'day')

--按周分区 NUMTODSINTERVAL (7, 'day')

--按月分区 NUMTOYMINTERVAL(1, 'month')

--按年分区 NUMTOYMINTERVAL(1, 'year')

4、按日自动分区表建表语句

sql 复制代码
-- Create table
CREATE TABLE sales_info
(
  data_dt DATE,
  prod_id     VARCHAR2(50),
  prod_num VARCHAR2(50),
  prod_nm   VARCHAR2(100),
  prod_color VARCHAR2(20),
  prod_size VARCHAR2(10),
  quantity_sold   INTEGER,
  data_tm  TIMESTAMP
)
PARTITION BY RANGE (data_dt) INTERVAL (NUMTODSINTERVAL(1, 'day'))
(partition part_t01 values less than(to_date('2020-01-01', 'yyyy-mm-dd')));
;
--按日分区 NUMTODSINTERVAL(1, 'day')
--按周分区 NUMTODSINTERVAL (7, 'day')
--按月分区 NUMTOYMINTERVAL(1, 'month')
--按年分区 NUMTOYMINTERVAL(1, 'year') 

【注】

NUMTODSINTERVAL 常用单位为('day','hour','minute','second')

NUMTOYMINTERVAL 常用单位为('year','month')

参考:ORACLE创建按日期自动分区表 - 1只在路上的程序猿 - 博客园 (cnblogs.com)

相关推荐
想七想八不如114085 分钟前
数据库--样题复习
数据库·sql·oracle
551只玄猫8 分钟前
【数据库原理 实验报告1】创建和管理数据库
数据库·sql·学习·mysql·课程设计·实验报告·数据库原理
q54314708720 分钟前
MySQL SQL100道基础练习题
数据库·mysql
zhoupenghui1681 小时前
mysql 中如果条件where中有or,则要求or两边的字段都必须有索引,否则不能用到索引, 为什么?
数据库·mysql·索引
eggwyw2 小时前
完美解决phpstudy安装后mysql无法启动
数据库·mysql
LaughingZhu2 小时前
Product Hunt 每日热榜 | 2026-03-23
数据库·人工智能·经验分享·神经网络·chatgpt
2401_894241922 小时前
用Pygame开发你的第一个小游戏
jvm·数据库·python
java修仙传2 小时前
MySQL 事务隔离级别详解
数据库·mysql·oracle
Irissgwe3 小时前
MySQL存储过程和触发器专题
数据库·mysql·oracle