本帖最后由 panda_rabbit 于 2012-10-8 11:11 编辑
如下,我建了一个按天划分的间隔分区表,需要定期对历史数据清理,也就是删除无用的历史分区,但问题是怎么根据一个日期确定对应的分区呢?
create table inter_test
(id number,operate_time date)
partition by range(operate_time)
interval(numtodsinterval (1,'day'))
(partition p20121001 values less than (to_date('2012-10-02','YYYY-MM-DD')));
SQL> insert into inter_test values(1,sysdate);
1 row inserted
SQL> insert into inter_test values(1,sysdate-1);
1 row inserted
SQL> insert into inter_test values(1,sysdate-2);
1 row inserted
SQL> insert into inter_test values(1,sysdate-3);
1 row inserted
SQL> commit;
SQL> select partition_name,high_value from user_tab_partitions where table_name='INTER_TEST';
PARTITION_NAME HIGH_VALUE
------------------------------ --------------------------------------------------------------------------------
P20121001 TO_DATE(' 2012-10-02 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P24 TO_DATE(' 2012-10-06 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P23 TO_DATE(' 2012-10-07 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P22 TO_DATE(' 2012-10-08 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
SYS_P21 TO_DATE(' 2012-10-09 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIA
表user_tab_partitions列中有个high_value,貌似可以根据这一列来判断,但该列是long类型,想了好几个方法都无法对该列进行处理。
问一下大家,有没有好方法求出一个日期对应的分区名呢?