Oracle日期函數(shù)有不少,to_date, to_char, trunc,add_month, months_between, next_day等等,本文提及的時間操作是關(guān)于Oracle時間的加減。
眾所周知,Oracle的時間可以直接用來加減操作,比如
select sysdate, sysdate - 2 from dual"SYSDATE" "SYSDATE-2"
----------------------------------- "19-5月 -09" "17-5月 -09" |
很明顯,sysdate - 2表示的日期-2,也就是2天前的時間,2天后的時間+2就可以了。
但是,有的時候我們不需要2天前或者2天后這么長的時間,我們需要2小時前,或者2分鐘前的時間。
但是并沒有發(fā)現(xiàn)Oracle有關(guān)于小時或者分鐘直接操作的函數(shù),本人也非常納悶。
后來查找資料和朋友們的幫助,才知道日期用于加減操作的時候是一個浮點數(shù),于是做了2個實驗。
實驗1:
select to_char(sysdate, 'yyyy-MM-dd hh24:mi:ss') cur_time, to_char(sysdate - 2 / 24, 'yyyy-MM-dd hh24:mi:ss') time_before_2_hour from dual;"CUR_TIME" "TIME_BEFORE_2_HOUR"
------------------------------------------------------------------- "2009-05-19 09:21:58" "2009-05-19 07:21:58" |
實驗2:
select to_char(sysdate, 'yyyy-MM-dd hh24:mi:ss') cur_time, to_char(sysdate - 2 / (24 * 60), 'yyyy-MM-dd hh24:mi:ss') time_before_2_minutes from dual;"CUR_TIME" "TIME_BEFORE_2_MINUTES"
--------------------------------------------------------------------- "2009-05-19 09:24:18" "2009-05-19 09:22:18" |
結(jié)果顯示比較明顯了,2小時前就是2/24天,2分鐘就是2/(24*60)天,Oracle日期的加減還是day上的加減,不過他是一個浮點數(shù),所以轉(zhuǎn)換成日期之后實際上就是時間上的加減。
【編輯推薦】
- Oracle數(shù)據(jù)庫中的字符處理技巧
- 善用Oracle表空間設(shè)計提升數(shù)據(jù)庫性能
- 詳解Oracle數(shù)據(jù)庫磁盤I/O優(yōu)化