Oracle按日周月年自动分区
目录
与普通建表语句相比,分区表多了一些分区信息;
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、按日自动分区表建表语句
-- 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')