我创建了一个包含以下分区间隔的表:
create table
pos_data_two (
start_date TIMESTAMP,
store_id NUMBER,
inventory_id NUMBER(6),
qty_sold NUMBER(3)
)
PARTITION BY RANGE (start_date)
INTERVAL(NUMTODSINTERVAL (1, 'DAY'))
(
PARTITION pos_data_p2 VALUES LESS THAN (TO_DATE('30.10.2013', 'DD.MM.YYYY'))
);
当我插入一个带有时间戳值
的行时'31.10.2013 00:00:00'
新创建的分区的高值是:
TIMESTAMP' 2013-11-01 00:00:00'
这是对的吗?不应该是2013-10-31 00:00:00 ??
答案 0 :(得分:3)
(免责声明:我只是在这里猜测)
您按天划分,因此给定日期的值属于同一分区。
您要插入的行的start_date正好在午夜,因此Oracle必须决定是将其放在前一天还是第二天。
显然,Oracle正在使用规则
lower_bound <= value < upper_bound
决定一个值应该进入哪个区间,所以你的值
2013-10-31 00:00:00
进入区间
[2013-10-31 00:00:00; 2013-11-01 00:00:00 [