1. 程式人生 > >Oracle資料庫Timestamp資料差值計算Sql語句

Oracle資料庫Timestamp資料差值計算Sql語句

今天的工作中遇到一個問題,需要計算資料庫中兩個時間欄位的差值,欄位型別是timestamp,將欄位直接相減,會得到timestamp型別的結果值,不是我想要的number型別的值。在網上找了一些方法,只能得到4舍5入的結果,這樣造成毫秒數不準確
後來再一篇部落格中得到啟發:

   select (to_date(substr(t.end_time, 1, 19), 'yyyy-mm-dd hh24:mi:ss') -
       to_date(substr(t.start_time, 1, 19), 'yyyy-mm-dd hh24:mi:ss')) * 24 * 3600 * 1000 +
       to_number(substr(t.end_time, 21
, 3)
)
- to_number(substr(t.start_time, 21, 3)) from rpt.bs_srv_log_1028 t;

這是一種思路,將毫秒和之前的日期分開計算,也是一種方法,但是執行計劃效率不夠高
後來找到了兩個函式解決了這個問題:

EXTRACT(SECOND FROM(t.end_time - t.start_time)) * 1000

這樣就完美的得到了我想要的毫秒數值啦~