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部分_時間轉換(案例一)


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

相關文章