Oracle日期函數有不少,to_date, to_char, trunc,add_month, months_between, next_day等等,本文提及的時間操作是關于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ā)現Oracle有關于小時或者分鐘直接操作的函數,本人也非常納悶。
后來查找資料和朋友們的幫助,才知道日期用于加減操作的時候是一個浮點數,于是做了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" |
結果顯示比較明顯了,2小時前就是2/24天,2分鐘就是2/(24*60)天,Oracle日期的加減還是day上的加減,不過他是一個浮點數,所以轉換成日期之后實際上就是時間上的加減。
【編輯推薦】
- Oracle數據庫中的字符處理技巧
- 善用Oracle表空間設計提升數據庫性能
- 詳解Oracle數據庫磁盤I/O優(yōu)化