Oracle_SQL部分_時間轉換(案例一)

chenoracle發表於2018-12-28

Oracle_SQL 部分 _ 時間轉換 ( 案例一 )

 

問題:

同事反饋XXX 系統裡記錄的耗時為字元型別,透過execl 不方便計算各個耗時統計,諮詢我是否有好的方法;

思路:

資料帶有天、小時、分,字元型別無法直接計算,可以透過oracle 資料庫將天、小時、分鐘資料單獨拆分出來,即把天和小時都轉換成分鐘,最終耗時欄位只有分鐘,方便後期運算;

步驟如下:

1 exec 資料匯入到Oracle 資料庫裡;

2 查詢資料

select 流程最長耗時 from 流程監控 ;

Oracle_SQL部分_時間轉換(案例一)

3 透過substr 擷取字串,再加上instr 獲取位置,可以實現將天、小時、分拆分出來;

---

select 流程最長耗時 , nvl ( substr ( 流程最長耗時 , 1 , instr ( 流程最長耗時 , ' 天' , - 1 ) - 1 ),0 )天 from 流程監控 ;

--- 小時

select 

流程最長耗時 ,

substr ( 流程最長耗時 , instr ( 流程最長耗時 , ' 天' + 1 , instr ( 流程最長耗時 , ' 小時' - instr ( 流程最長耗時 , ' 天' - 1 ) 小時 

from 

流程監控 ;

--- 分鐘

select 

流程最長耗時 ,

substr ( 流程最長耗時 , instr ( 流程最長耗時 , ' 小時' + 2 , instr ( 流程最長耗時 , ' 分' - instr ( 流程最長耗時 , ' 小時' - 2 ) 分鐘 

from

流程監控 ;

4 將天、小時轉換成分鐘,並求出總分鐘數

select

流程最長耗時 ,

nvl ( substr ( 流程最長耗時 , 1 , instr ( 流程最長耗時 , '天' , - 1 ) - 1 ), * 1440 + substr ( 流程最長耗時 , instr ( 流程最長耗時 , '天' + 1 , instr ( 流程最長耗時 , '小時' - instr ( 流程最長耗時 , '天' - 1 )* 60 + substr ( 流程最長耗時 , instr ( 流程最長耗時 , '小時' + 2 , instr ( 流程最長耗時 , '分' - instr ( 流程最長耗時 , '小時' - 2 )

  from

流程監控 ;

Oracle_SQL部分_時間轉換(案例一)

歡迎關注我的微信公眾號"IT小Chen",共同學習,共同成長!!!

Oracle_SQL部分_時間轉換(案例一)

Oracle_SQL部分_時間轉換(案例一)



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2286780/,如需轉載,請註明出處,否則將追究法律責任。

相關文章