我有一個使用間隔分區(每月分區)的提要表將分區鍵作爲表的日期字段保存3年的歷史數據。我們需要刪除3年以上(36個月)的分區。根據Oracle中的日期字段提取分區的實際日期信息
在刪除分區時,我想向用戶顯示一條消息,告訴用戶要刪除的分區的月份和年份。要獲取月份信息,我必須使用USER_TAB_PARTITIONS表的HIGH_VALUE列,因爲partition_name是系統生成的,如'SYSP ###',它不提供月份信息。
在HIGH_VALUE列中的值是這樣的:
TO_DATE(' 2011-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')
我使用SUBSTR/REGEXP_SUBSTR是無法提取 '2011-01-01' 從上面的字符串。
我用下面的查詢只是爲了檢查我是否能提取所需的信息:
select REGEXP_SUBSTR('TO_DATE(' 2011-01-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')',10, 10) FROM DUAL;
The error I am getting is:
Error: ORA-01036: illegal variable name/number
我不知道如果我在這裏做了一些愚蠢的錯誤。
會讚賞你的協助/任何指針/替代方式來實現這一點。
在此先感謝。
問候,
維諾德
你能發佈完整的sql語句嗎? –
是的。 select REGEXP_SUBSTR('TO_DATE('2011-01-01 00:00:00','SYYYY-MM-DD HH24:MI:SS','NLS_CALENDAR = GREGORIAN')',10,10)FROM DUAL; 我得到的錯誤是: –
請更新您的問題,而不是添加評論。 –