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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章