Oracle使用range分區(qū)并根據(jù)時間列自動創(chuàng)建分區(qū)
Oracle使用range分區(qū),根據(jù)時間列自動創(chuàng)建分區(qū)
-- 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')) --月分區(qū)用month,年分區(qū)用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 根據(jù)日期自動生成分區(qū)表
oracle 根據(jù)日期自動生成分區(qū)表
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是一個數(shù)字,c是一個字符串,
表明x的單位,這個函數(shù)把x轉(zhuǎn)為interval day to second數(shù)據(jù)類型
常用的單位有 (‘day’,‘hour’,‘minute’,‘second’)
numtoyminterval 與numtodsinterval函數(shù)類似,將x轉(zhuǎn)為interval year to month數(shù)據(jù)類型
常用的單位有(‘year’,‘month’)
格式:NumToYMInterval(n, interval_unit);
n: 數(shù)值類型
interval_unit: ‘YEAR’, ‘MONTH’ ,或其他可以轉(zhuǎn)換成這兩個值之一的表達式
NumToYMInterval(1, ‘YEAR’) :一年后的間隔
NumToYMInterval(-1, ‘MONTH’): 一個月前
小數(shù)會被計算成整數(shù)后,再做計算:
select sysdate + numtoyminterval(0.1, 'MONTH') from dual; 2023-03-21 09:54:37
如果執(zhí)行含有函數(shù)的sql時報錯:”INTERVAL YEAR TO MONTH literal“。不能與數(shù)值做運算。
常用用途:
做日期運算時,這個函數(shù)非常有用。例如:取一個月后的日期:
select sysdate + NumToYMInterval(1, 'MONTH') from dual;
到此這篇關(guān)于Oracle使用range分區(qū)并根據(jù)時間列自動創(chuàng)建分區(qū)的文章就介紹到這了,更多相關(guān)Oracle自動創(chuàng)建分區(qū)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Oracle Max函數(shù)使用中出現(xiàn)的問題
在Oracle Max函數(shù)使用中,會出現(xiàn)一些問題,本文將介紹解決方法,需要的朋友可以了解下2012-11-11
oracle數(shù)據(jù)庫刪除數(shù)據(jù)Delete語句和Truncate語句的使用比較
oracle當表中的數(shù)據(jù)不需要時,則應(yīng)該刪除該數(shù)據(jù)并釋放所占用的空間,刪除表中的數(shù)據(jù)可以使用Delete語句或者Truncate語句,下面分別介紹2012-09-09
解決The?Network?Adapter?could?not?establish?the?conn問題
這篇文章主要介紹了解決The?Network?Adapter?could?not?establish?the?conn問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02
Win7 64環(huán)境下Oracle10g 64位版本安裝教程
這篇文章主要為大家詳細介紹了Win7 64環(huán)境下Oracle10g 64位版本安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03
Oracle中的for update 和 for update now
在Oracle數(shù)據(jù)庫中,FOR UPDATE和FOR UPDATE NOWAIT是兩種用于行級鎖定的SQL子句,它們通常用在SELECT語句中以確保數(shù)據(jù)的一致性和隔離性,本文介紹Oracle中的for update 和 for update nowait的區(qū)別和用法,感興趣的朋友跟隨小編一起看看吧2024-03-03
Oracle中scott表結(jié)構(gòu)與簡單查詢實例分析
這篇文章主要介紹了Oracle中scott表結(jié)構(gòu)與簡單查詢,實例分析Oracle查詢的相關(guān)技巧,需要的朋友可以參考下2015-04-04

