Oracle資料庫Timestamp資料差值計算Sql語句
阿新 • • 發佈:2018-12-26
今天的工作中遇到一個問題,需要計算資料庫中兩個時間欄位的差值,欄位型別是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
這樣就完美的得到了我想要的毫秒數值啦~