从varchar列开始的SQL总小时数

时间:2016-11-14 23:53:31

标签: sql time sql-server-2016

我似乎无法从SQL Server 2016中了解如何从varchar列获取总小时数。

查询:

SELECT taakuren
FROM taken

返回

10:00     
12:15    
26:00     
40:00

我希望它返回

88:15

我已经尝试了以下查询,但是当它超过24小时时总会出现问题

select Convert(Varchar, (Convert(DateTime, taakuren)), 114) as TotalTime 
from taken

2 个答案:

答案 0 :(得分:2)

基本上,time数据类型会在24小时后逐渐消失。如果你想要更多的时间,那么你可能不得不求助于你自己的算术:

select cast(sum(hours * 60 + minutes) / 60 as varchar(10)) + ':' +
       right('00' + cast(sum(hours * 60 + minutes) % 60 as varchar(10)))
from taken t outer apply
     (values (left(t.taakuren, 2) + 0, right(t.taakuren, 2) + 0)
     ) v(hours, minutes);

答案 1 :(得分:0)

更新我的代码是:

select cast(sum(hours * 60 + minutes) / 60 as varchar(10)) + ':' +
   cast(sum(hours * 60 + minutes) % 60 as varchar(10))
from taken t outer apply
 (values (left(t.taakuren, 2) + 0, SUBSTRING(t.taakuren, 4,6) + 0)
 ) v(hours, minutes)