0

我的解决方案(德语几个月):

PARTITION BY LIST ((to_char(GEBURTSDATUM, 'Month'))) 
(  
  PARTITION p1 VALUES('JANUAR'),  
  PARTITION p2 VALUES('Februar'), 
  PARTITION p3 VALUES('MÄRZ'),  
  PARTITION p4 VALUES('APRIL'), 
  PARTITION p5 VALUES('MAI'),  
  PARTITION p6 VALUES('JUNI'), 
  PARTITION p7 VALUES('JULI'), 
  PARTITION p8 VALUES('AUGUST'),
  PARTITION p9 VALUES('SEPTEMBER'),
  PARTITION p10 VALUES('OKTOBER'), 
  PARTITION p11 VALUES('NOVEMBER'),
  PARTITION p12 VALUES('DEZEMBER') 
);  

由于该to_char功能,这不起作用。

4

2 回答 2

3

在 11g 中,您可以通过定义虚拟列来使用基于函数的分区:http ://www.oracle-base.com/articles/11g/partitioning-enhancements-11gr1.php#virtual_column_based_pa​​rtitioning

否则,您必须为分区月份手动定义和维护一个单独的列。

我建议在任何一种情况下都使用月份数字而不是名称。

于 2013-01-07T19:50:54.723 回答
1

如果表有日期列,下面的语句可以作为从今天开始每月分区的例子(Oracle 11g):

PARTITION BY RANGE (date_column)
            INTERVAL (NUMTODSINTERVAL(1,'month') )
             (PARTITION p_first VALUES LESS THAN ('16-MAY-2016'));
于 2016-06-16T11:55:05.523 回答