Интервальное разбиение в Oracle на SYSDATE - PullRequest
0 голосов
/ 13 октября 2019

Я ищу лучший способ динамического создания разделов. Например, раздел 1 будет содержать все записи, датированные на сегодняшний день (SYSDATE), а раздел 2 будет содержать записи вчерашней даты (SYSDATE-1) и так далее до SYSDATE-29.

До сих пор я пытался использовать:

PARTITION BY RANGE(COLUMN_NAME)
INTERVAL(NUMTODSINTERVAL(1,'DAY'))
(
PARTITION p0 VALUES LESS THAN (select SYSDATE from dual)
);

и

PARTITION BY RANGE(COLUMN_NAME)
INTERVAL(NUMTODSINTERVAL(1,'DAY'))
(
PARTITION p0 VALUES LESS THAN (to_char(SYSDATE,'DD-MON-YY')from dual)
);

Но я получаю сообщение об ошибке следующим образом:

«ORA-14019: элемент, связанный с разделом, должен быть одним из следующих элементов: строка, дата-время или литерал интервала, число или MAXVALUE»

Итак, как мне это сделать?

1 Ответ

0 голосов
/ 13 октября 2019

Вот пример таблицы с интервальным разделением:

create table partition_interval_demo
( id         number(6)     generated always as identity
, val        varchar2(50)  not null
, sale_date  date          not null )
partition by range (sale_date) interval (interval '1' day)
( partition p1 values less than (date '0001-01-01') );

Проверьте, где ваше определение отличается.

...