前言:測試工程師日常,為了驗證欄位:平均回復時長 顯示是否正確,所以需要將2個日期欄位進行相減,得出的數據轉化為小時,然後看小時落在哪個區間端裡邊,前端就顯示哪個區間端。規則:<=5分鐘,顯示5分鐘內;<=30分鐘,顯示30分鐘內;<=1小時,顯示1小時內,依次類推,直到>=24小時,顯示未知。
一、初步計算測試數據如下,需求是:將欄位dtm_accept 和欄位dtm_crt 兩列進行相減,得出的數據累加並除以條數,根據返回的結果,取對應的區間。
SQL語句:
select dtm_accept , dtm_crt,
TIMESTAMPDIFF(SECOND,dtm_accept,dtm_crt) as aSecond,
TIMESTAMPDIFF(MINUTE,dtm_accept,dtm_crt) as bMinute,
TIMESTAMPDIFF(HOUR,dtm_accept,dtm_crt) as cHour
from test
執行上面的sql語句,得出以下:
手動將aSecond這一列,相加 並換算為小時數,最後的結果=小時數/6(條數)
179740 秒=49.9277778 時
49.93/6=8.32 所以顯示的區間數應該是:9小時內
二、進一步優化:select
dtm_accept ,
dtm_crt,
TIMESTAMPDIFF(SECOND,dtm_accept,dtm_crt) as aSecond,
TIMESTAMPDIFF(MINUTE,dtm_accept,dtm_crt) as bMinute,
TIMESTAMPDIFF(HOUR,dtm_accept,dtm_crt) as cHour
from test
union ALL
select
' ' ,
'合計',
SUM(TIMESTAMPDIFF(SECOND,dtm_accept,dtm_crt)) ,
SUM(TIMESTAMPDIFF(MINUTE,dtm_accept,dtm_crt)) ,
SUM(TIMESTAMPDIFF(HOUR,dtm_accept,dtm_crt) )
from test
通過sql語句,直接計算出毫秒數,轉成小時在除以6 ,
49.93/6=8.32 所以顯示的區間數應該是:9小時內
三、擴展:將帶毫秒的時間格式化為不帶毫秒的時間select dtm_upt,DATE_FORMAT(dtm_upt,"%Y-%m-%d %H:%i:%S") from test