您好,登錄后才能下訂單哦!
這篇“Oracle怎么使用range分區并根據時間列自動創建分區”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Oracle怎么使用range分區并根據時間列自動創建分區”文章吧。
Oracle使用range分區,根據時間列自動創建分區
-- Create table create table MY_TEST ( id NUMBER (12) not null, name VARCHAR2 (12) not null, today TIMESTAMP (6) default SYSDATE ) partition by range (today) interval(numtodsinterval(1,'day')) --月分區用month,年分區用year ( partition P_20230411 values less than (TO_DATE('2023-04-12 00:00:00,"SYYYY-MM-DD HH24:MI:SS")) tablespace TB_SAMS pctfree 10 initrans 1 maxtrans 255 storage ( initial 1M next 1M minextents 1 maxextents unlimited ) ); - - Add comments to the table comment on table MY_TEST is ‘測試表'; Add comments to the columns comment on column MY_TEST.id is ‘主鍵id'; comment on column MY_TEST.name is ‘名稱'; comment on column MY_TEST.today is ‘時間'; - - Create/Recreate indexes create index MY_TEST_INDEX on MY_TEST (id) tablespace TB_SAMS pctfree 10 initrans 2 maxtrans 255 storage ( initial 64K next 1M minextents 1 maxextents unlimited ); - -Grant/Revoke object privileges grant select on MY_TEST to DBVIEW; INSERT INTO MY_TEST VALUES (1,'xxc1',SYSDATE); INSERT INTO MY_TEST VALUES (2,'xxc2'?SYSDATE+1); INSERT INTO MY_TEST VAIUES (3,'xxc3',SYSDATE+2) ;
附錄:oracle 根據日期自動生成分區表
oracle 根據日期自動生成分區表
CREATE TABLE my_table ( id NUMBER, name VARCHAR2(50), created_date DATE ) PARTITION BY RANGE (created_date) INTERVAL (NUMTODSINTERVAL(1, 'DAY')) ( PARTITION p1 VALUES LESS THAN (TO_DATE('2022-01-01', 'YYYY-MM-DD')) );
其中:
numtodsinterval(,) ,x是一個數字,c是一個字符串,
表明x的單位,這個函數把x轉為interval day to second數據類型
常用的單位有 (‘day’,‘hour’,‘minute’,‘second’)
numtoyminterval 與numtodsinterval函數類似,將x轉為interval year to month數據類型
常用的單位有(‘year’,‘month’)
格式:NumToYMInterval(n, interval_unit);
n: 數值類型
interval_unit: ‘YEAR’, ‘MONTH’ ,或其他可以轉換成這兩個值之一的表達式
NumToYMInterval(1, ‘YEAR’) :一年后的間隔
NumToYMInterval(-1, ‘MONTH’): 一個月前
小數會被計算成整數后,再做計算:
select sysdate + numtoyminterval(0.1, 'MONTH') from dual; 2023-03-21 09:54:37
如果執行含有函數的sql時報錯:”INTERVAL YEAR TO MONTH literal“。不能與數值做運算。
常用用途:
做日期運算時,這個函數非常有用。例如:取一個月后的日期:
select sysdate + NumToYMInterval(1, 'MONTH') from dual;
以上就是關于“Oracle怎么使用range分區并根據時間列自動創建分區”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。