时间戳列上的 oracle 范围分区
oracle range partition on timestampe column
这就是我为创建 table 在 createTime 字段上使用每日分区所写的内容
create table T_ASYNCFCMNOTIFICATION (
C_ID NUMBER(34, 0) not null,
C_CREATETIME timestamp not null,
C_DEVICETOKEN varchar2(255 char),
F_DATA NUMBER(34, 0),
primary key (C_ID)
)
PARTITION BY RANGE (C_CREATETIME)
INTERVAL(NUMTOYMINTERVAL(1, 'day'))
(
PARTITION T_ASYNCFCMNOTIFICATION_P1 VALUES LESS THAN (TO_DATE('01-11-2020', 'DD-MM-YYYY'))
);
但是当我 运行 我的查询时我遇到了这个错误:
错误报告 -
ORA-14752: 区间表达式不是正确类型的常量
14752. 00000 - “区间表达式不是正确类型的常量”
*原因:您试图使用非常量间隔或间隔
其数据类型与分区列不对应
*行动:只对区间使用常量表达式。如果数据类型为
分区列是数字,间隔必须是数字
持续的。如果数据类型是date/time类型,区间必须
是一个区间类型的常量
使用间隔 NUMTODSINTERVAL(1, 'day')
进行 每日 分区
这个很好用
....
PARTITION BY RANGE (C_CREATETIME)
INTERVAL(NUMTODSINTERVAL(1, 'day'))
(
PARTITION T_ASYNCFCMNOTIFICATION_P1 VALUES LESS THAN (TO_DATE('01-11-2020', 'DD-MM-YYYY'))
);
间隔NUMTOYMINTERVAL用于YEAR
或MONTH
-ly分区
这就是我为创建 table 在 createTime 字段上使用每日分区所写的内容
create table T_ASYNCFCMNOTIFICATION (
C_ID NUMBER(34, 0) not null,
C_CREATETIME timestamp not null,
C_DEVICETOKEN varchar2(255 char),
F_DATA NUMBER(34, 0),
primary key (C_ID)
)
PARTITION BY RANGE (C_CREATETIME)
INTERVAL(NUMTOYMINTERVAL(1, 'day'))
(
PARTITION T_ASYNCFCMNOTIFICATION_P1 VALUES LESS THAN (TO_DATE('01-11-2020', 'DD-MM-YYYY'))
);
但是当我 运行 我的查询时我遇到了这个错误:
错误报告 - ORA-14752: 区间表达式不是正确类型的常量 14752. 00000 - “区间表达式不是正确类型的常量” *原因:您试图使用非常量间隔或间隔 其数据类型与分区列不对应 *行动:只对区间使用常量表达式。如果数据类型为 分区列是数字,间隔必须是数字 持续的。如果数据类型是date/time类型,区间必须 是一个区间类型的常量
使用间隔 NUMTODSINTERVAL(1, 'day')
进行 每日 分区
这个很好用
....
PARTITION BY RANGE (C_CREATETIME)
INTERVAL(NUMTODSINTERVAL(1, 'day'))
(
PARTITION T_ASYNCFCMNOTIFICATION_P1 VALUES LESS THAN (TO_DATE('01-11-2020', 'DD-MM-YYYY'))
);
间隔NUMTOYMINTERVAL用于YEAR
或MONTH
-ly分区