使用sql将secondcolumn值(分钟)转换为小时:分钟:秒

时间:2013-07-22 10:23:15

标签: sql sql-server

我有这样的查询:

首先查询:

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格式获得平均值。

1 个答案:

答案 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