在今天的工做中,學到了如下幾個知識點: 程序員
1、date和timestamp 的區別 spa
date類型是Oracle經常使用的日期型變量,他的時間間隔是秒。兩個日期型相減獲得是兩個時間的間隔,注意單位是"天"。例如:查看一下當前距離倫敦奧運會開幕還有多長時間: ci
select to_date('2012-7-28 03:12:00','yyyy-mm-dd hh24:mi:ss')-sysdate from dual io
結果是:92.2472685185185天,而後你根據相應的時間換算你想要的間隔就行!這個結果可能對程序員有用,對於想直接看到結果的人,這個數字還不是很直觀,因此,就引出了timestamp類型 變量
timestamp是DATE類型的擴展,能夠精確到小數秒(fractional_seconds_precision),能夠是 0 to9,缺省是6。兩個timestamp相減的話,不能直接的獲得天數書,而是獲得,多少天,多少小時,多少秒等,例如:一樣查看一下當前距離倫敦奧運會開幕還有多長時間: 擴展
select to_timestamp('2012-7-28 03:12:00','yyyy-mm-dd hh24:mi:ss')-systimestamp from dual date
結果是:+000000092 05:51:24.032000000,稍加截取,就能夠獲得92天5小時,51分鐘,24秒,這樣用戶看起來比較直觀一些!可是這個數字對程序員來講不是很直觀了,若是想要具體的時間長度的話,而且精度不要求到毫秒的話,能夠將timestamp類型轉成date類型,而後直接相減便可。 select
date和timestamp之間的相互轉換能夠經過to_char來轉換: 程序
timestamp——>date: select to_date(to_char(systimestamp,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') from dual im
date ——>timestamp: select to_timestamp(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') from dual