2013-10-31 31 views
2

我創建一個表具有以下分區間隔:Oracle Partition Interval by day - 錯誤的高值?

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')) 
); 

當我插入AA行與時間戳值

'31.10.2013 00:00:00' 

新創建的分區的高值是:

TIMESTAMP' 2013-11-01 00:00:00' 

這是正確的嗎?不應該是2013-10-31 00:00:00 ??

+0

我假設你的意思是「不應該是2013-10-31 00:00:00」(10月31日而不是1日),對吧? –

+0

是的,確實! – user2428207

回答

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 [

+0

這可能是!你知道這個解決方法嗎? – user2428207

+0

爲什麼你想改變數據庫的行爲呢? –

+0

+1規則解釋 – SriniV