1

我有这样的查询:

第一个查询:

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

1 回答 1

0

这不是最容易做的事情,但它不是火箭科学。

我所做的是在子查询中获得平均秒数,然后将秒数除以 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
于 2013-07-22T12:37:49.260 回答