【问题标题】:oracle range partition on timestampe column时间戳列上的 Oracle 范围分区
【发布时间】:2020-11-22 17:15:16
【问题描述】:

这是我为创建一个在 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 - “区间表达式不是正确类型的常数” *原因:您尝试使用非常量区间或区间 其数据类型与分区列不对应 *操作:仅对区间使用常量表达式。如果数据类型为 分区列是数字,区间必须是数字 持续的。如果数据类型是日期/时间类型,则间隔必须 是区间类型的常数

【问题讨论】:

    标签: sql oracle database-partitioning


    【解决方案1】:

    使用间隔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 用于YEARMONTH-ly 分区

    【讨论】:

      猜你喜欢
      • 2012-08-06
      • 2020-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-12
      相关资源
      最近更新 更多