眾所周知,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ù),本人也非常納悶。
后來查找資料和朋友們的幫助,才知道日期用于加減操作的時候是一個浮點(diǎn)數(shù),于是做了2個實(shí)驗(yàn)。
實(shí)驗(yàn)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"
|
實(shí)驗(yàn)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上的加減,不過他是一個浮點(diǎn)數(shù),所以轉(zhuǎn)換成日期之后實(shí)際上就是時間上的加減。
【編輯推薦】
- Oracle數(shù)據(jù)庫中的字符處理技巧
- 善用Oracle表空間設(shè)計提升數(shù)據(jù)庫性能
- 詳解Oracle數(shù)據(jù)庫磁盤I/O優(yōu)化
當(dāng)前名稱:淺談利用浮點(diǎn)數(shù)操作Oracle數(shù)據(jù)庫日期
地址分享:
http://m.fisionsoft.com.cn/article/djdehgc.html