Oracle 带时间戳的自动分区

Oracle 带时间戳的自动分区,oracle,oracle11g,partitioning,Oracle,Oracle11g,Partitioning,我想每天对我的表(Oracle)进行自动分区 我只提供了一个时间戳列: DD.MM.YYYY HH24:MI:SS 到目前为止,我发现了这个,但它不起作用: create table pos_data ( start_date DATE, store_id NUMBER, inventory_id NUMBER(6), qty_sold NUMBER(3), ) PARTITION BY R

我想每天对我的表(Oracle)进行自动分区

我只提供了一个时间戳列:

 DD.MM.YYYY HH24:MI:SS
到目前为止,我发现了这个,但它不起作用:

create table 
pos_data ( 
    start_date        DATE,
    store_id          NUMBER,
    inventory_id      NUMBER(6),
    qty_sold          NUMBER(3),
 ) 
 PARTITION BY RANGE (start_date) 
 INTERVAL(NUMTOYMINTERVAL(1, 'MONTH')) 
 (  
  PARTITION pos_data_p2 VALUES LESS THAN (TO_DATE('1-7-2007', 'DD-MM-YYYY')),
  PARTITION pos_data_p3 VALUES LESS THAN (TO_DATE('1-8-2007', 'DD-MM-YYYY')) 
 ); 
在这个例子中,我得到了无效的标识符错误。。。我不知道时间戳是否会对日期列产生影响

答复:

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('1-7-2007', 'DD-MM-YYYY')),
  PARTITION pos_data_p3 VALUES LESS THAN (TO_DATE('1-8-2007', 'DD-MM-YYYY')) 
 ); 

这是因为您错误地将
放在
销售数量(3)之后,
将其删除,然后像这样尝试

create table 
pos_data ( 
    start_date        DATE,
    store_id          NUMBER,
    inventory_id      NUMBER(6),
    qty_sold          NUMBER(3)
 ) 
 PARTITION BY RANGE (start_date) 
 INTERVAL(NUMTOYMINTERVAL(1, 'MONTH')) 
 (  
  PARTITION pos_data_p2 VALUES LESS THAN (TO_DATE('1-7-2007', 'DD-MM-YYYY')),
  PARTITION pos_data_p3 VALUES LESS THAN (TO_DATE('1-8-2007', 'DD-MM-YYYY')) 
 ); 

您有一个逗号对多个逗号(在
售出数量
列定义之后):


是的,我将函数改为NUMTODSINTERVAL,这应该适用于日常分区
create table 
pos_data ( 
    start_date        DATE,
    store_id          NUMBER,
    inventory_id      NUMBER(6),
    qty_sold          NUMBER(3)
 ) 
 PARTITION BY RANGE (start_date) 
 INTERVAL(NUMTOYMINTERVAL(1, 'MONTH')) 
 (  
  PARTITION pos_data_p2 VALUES LESS THAN (TO_DATE('1-7-2007', 'DD-MM-YYYY')),
  PARTITION pos_data_p3 VALUES LESS THAN (TO_DATE('1-8-2007', 'DD-MM-YYYY')) 
 );