oracle資料庫時間類型
『壹』 oracle中日期型數據長度有什麼不同
oracle數據類型看起來非常簡單,但用起來會發現有許多知識點,本文是我對ORACLE日期數據類型的一些整理,都是開發入門資料,與大家分享:
註:由於INTERVAL及TIME ZONE實際用得比較少,所以本文內容未涉及這兩個方面。
1、常用日期型數據類型
1.1、DATE
這是ORACLE最常用的日期類型,它可以保存日期和時間,常用日期處理都可以採用這種類型。DATE表示的日期范圍可以是公元前4712年1月1日至公元9999年12月31日
date類型在資料庫中的存儲固定為7個位元組,格式為:
第1位元組:世紀+100
第2位元組:年
第3位元組:月
第4位元組:天
第5位元組:小時+1
第6位元組:分+1
第7位元組:秒+1
1.2、TIMESTAMP(p)
這也是ORACLE常用的日期類型,它與date的區別是不僅可以保
存日期和時間,還能保存小數秒,小數位數可以指定為0-9,默認為6位,所以最高精度可以到ns(納秒),資料庫內部用7或者11個位元組存儲,如果精度為
0,則用7位元組存儲,與date類型功能相同,如果精度大於0則用11位元組存儲。
格式為:
第1位元組:世紀+100
第2位元組:年
第3位元組:月
第4位元組:天
第5位元組:小時+1
第6位元組:分+1
第7位元組:秒+1
第8-11位元組:納秒,採用4個位元組存儲,內部運算類型為整形
註:TIMESTAMP日期類型如果與數值進行加減運算會自動轉換為DATE型,也就是說小數秒會自動去除。
1.3、DATE與TIMESTAMP類型內部存儲驗證
1 create table T
2 (
3 C1 DATE,
4 C2 TIMESTAMP(9)
5 );
6
7 insert into t(c1,c2) values(date'2010-2-12',timestamp'2010-2-12 13:24:52.234123211');
8 insert into t(c1,c2) values(
9 to_date('2010-2-12 10:20:30','YYYY-MM-DD HH24:MI:SS'),
10 to_timestamp('2010-2-12 13:24:52.123456','YYYY-MM-DD HH24:MI:SS.FF6')
11 );
12
13 sql> select c1,mp(c1) c1_d,c2,mp(c2) c2_d from t;
『貳』 oracle中得到當前系統時間
首先,獲取系統當前日期(date類型):
sql
select sysdate from al;
如果需要以字元格式(如'yyyy-mm-ddhh24:mi:ss')展示時間:
sql
select to_char(sysdate, 'yyyy-mm-ddhh24:mi:ss') from al;
對於更詳細的日期元素,如年、月、日、季度和周,可以使用以下函數:
- 年份: select to_char(sysdate, 'yyyy') from al;
- 月份: select to_char(sysdate, 'MM') from al;
- 日: select to_char(sysdate, 'dd') from al;
- 季度: select to_char(sysdate, 'Q') from al;
- 周數(按日歷計算,可能有52或53周): select to_char(sysdate, 'iw') from al;
處理時間間隔也很常見,例如減去特定時間單位:
- 減去7分鍾: select sysdate, sysdate - interval ƍ' minute from al;
- 減去7小時: select sysdate - interval ƍ' hour from al;
- 減去7天: select sysdate - interval ƍ' day from al;
- 減去7個月: select sysdate, sysdate - interval ƍ' month from al;
- 減去7年: select sysdate, sysdate - interval ƍ' year from al;
此外,你還可以將時間間隔乘以一個數字,如上述的8小時乘以7:
sql
select sysdate, sysdate - 8 * interval ƍ' hour from al;
這些SQL命令將幫助你在Oracle環境中輕松處理時間相關的操作。