我有这样的查询:
首先查询:
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
但我想在average
中获得hour:minutes:second
,是否有办法以hh:mm:ss格式获得平均值。
答案 0 :(得分:0)
不是最简单的事情,但这不是火箭科学。
我所做的是在子查询中得到averge秒,然后将秒数除以3600,这可以得到你的小时数1)。
为了获得分钟2),我从小时数中计算所有秒数的平均秒数。
然后3),为了得到剩余的秒数,我在几小时内将所有秒数加在一起,所有秒数在分钟内计算,然后从平均秒数中减去这些秒数,这样就可以得到剩余的秒数。
将数字连接到文本
时,必须进行转换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