1. 程式人生 > >Oracle資料庫中關於日期和時間欄位型別

Oracle資料庫中關於日期和時間欄位型別

Oracle資料庫

與日期有關的有三種類型:date,timestamp與interval。DATE和TIMESTAMP型別儲存精度可變的固定日期/時間,二者區別是,後者秒可以精確到小數,另外還可以有時區之分。。INTERVAL型別可以很容易地儲存一個時間量,如“8個小時”或“30天”。將兩個日期相減,就會得到一個時間間隔(INTERVAL);例如,將8小時間隔加到一個TIMESTAMP上,會得到8小時以後的一個新的TIMESTAMP。

操作日期有關欄位的時候,最好顯示地指定日期或時間格式,比如:

Insert into t ( date_column ) values ( to_date( '01/02/2003', 'DD/MM/YYYY' ) );避免各種格式造成混亂。

1. DATE型別介紹

DATE型別是一個7位元組的定寬日期/時間資料型別。它總是包含7個屬性,包括:世紀、世紀中哪一年、月份、月中的哪一天、小時、分鐘和秒。這七個位元組分別儲存的是這7個屬性,比如:2005-12-05 12:30:43儲存的是120,105,12,5,12,31,44。世紀和年份分別加了100,分鐘和秒鐘分別加了1。世紀和年份加100是為了區分公元前和公元后。我們經常使用這樣的條件,Where to_char(date_column,'yyyy') = '2005',其實這個地方可以換成:Where trunc(date_column,'y') = to_date('01-jan-2005','dd-mon-yyyy')。因為,trunc函式是在日期上將年份後面5個位元組清空,而to_char函式,還要轉換成字串。當然,如果能夠不使用函式最好,比如:created >= to_date('01-jan-2005','dd-mon-yyyy') and created < to_date('01-jan-2006','dd-mon-yyyy');這樣如果在created列上建立了索引,還能使用索引。

更多Oracle資料、視訊教程:

http://2.taobao.com/item.htm?id=42922011874&spm=686.1000925.0.0.ZVvkz6&mt=


如何向date增減時間

1. 使用NUMTODSINTERVAL內建函式來增加小時、分鐘和秒。比如:DATE+NUMTODSINTERVAL(n,'minute')

2. 加一個簡單的數來增加天。比如:DATE+n

3. 使用ADD_MONTHS內建函式來增加月和年。比如:ADD_MONTHS(DATE,n)

因為,ADD_MONTHS函式專門處理月末日期。它實際上會為我們完成日期的“舍入”;例如,如果向一個有31天的月增加1個月,而且下一個月不到31天,ADD_MONTHS就會返回下一個月的最後一天。比如:向2000年2月29日增加1個月,得到的是2000年3月31日。2月29日是該月的最後一天,所以ADD_MONTHS返回了下一個月的最後一天。

2. TIMESTAMP型別介紹

TIMESTAMP型別與DATE非常類似,只不過另外還支援小數秒和時區。

語法如下: TIMESTAMP(n),n可選,用於指定TIMESTAMP中秒分量的小數位數,可以取值為0~9.如果指定0,TIMESTAMP在功能上則與DATE等價。

更多Oracle資料、視訊教程:

http://2.taobao.com/item.htm?id=42922011874&spm=686.1000925.0.0.ZVvkz6&mt=