2013-07-22 34 views
1

我有這樣的查詢:轉換secondcolumn值(分鐘)時:分:秒使用SQL

首先查詢:

SELECT* FROM Transaction_tbl WHERE Locid=6 AND Paydate is not null 

第二個查詢:

SELECT SUM(DATEDIFF(MI,t.Paydate,t.DelDate)) as Totalv , 
    AVG(CONVERT(NUMERIC(18,2), DATEDIFF(MI,t.Paydate,t.DelDate))) as Average 
FROM Transaction_tbl t 
WHERE Locid=6 

我的輸出:

Totalv | Average 
-------+----------- 
33169 | 1745.736842 

但是我想得到averagehour:minutes:second,有沒有什麼辦法可以得到hh:mm:ss格式的平均值。

+4

重複

鑄造是必要的[:分鐘:轉換分鐘至小時在SQL秒](http://stackoverflow.com/questions/17770043/converting-分鐘至hourminutessecond式-SQL?RQ = 1)? – jpw

回答

0

不是最簡單的事情,但它不是火箭科學。

我所做的是在子查詢中獲得平均秒數,然後將秒數除以3600,這會讓您花費1小時。

爲了得到分鐘2),我從平均秒數中減去了小時內所有的秒數。

然後3),爲了得到剩餘的秒數,我把所有的秒數加在一起在幾小時內計算出來,所有的秒數在分鐘中計算,然後從平均秒數中減去那些秒數,這給你剩下的秒數。當你Concat的數字爲文本的

select 
cast(AvgSec/3600 as varchar(2)) +':'      --1) gets hours 
+cast(AvgSec/60 -((AvgSec/3600) * 60) as varchar(2)) +':' --2) gets minutes 
+cast((AvgSec - ((((AvgSec/3600) *60)*60)     --3) leftover seconds 
+ ((AvgSec/60 -((AvgSec/3600) * 60))*60))) as varchar(2)) as 'hh:mm:ss' 
from (
    select avg(datediff(s,date1,date2)) as AvgSec 
    from _dates 
)as sub