微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在SQL Server 2008中获取时间字段的总和

我在查找存储在列中的值的总和时遇到问题,

我有这样一张桌子:

gs_cycle_no    | from_time   | to_time  | total_hours(varchar) ...
GSC-334/2012   | 13:00       | 7:00     |  42:00
GSC-334/2012   | 8:30        | 3:45     |  6:00
.
.
.

我需要找到的是由gs_cycle_no组成的Sum(total_hours)组.
但Sum方法不能在varchar列上工作,并且由于其格式,我也无法将其转换为十进制,

如何根据gs_cycle_no找到total_hours列的总和?

解决方法

如果你没有分钟而且只有几个小时,那么你可以这样做:
select
    cast(sum(cast(replace(total_hours,':','') as int) / 100) as nvarchar(max)) + ':00'
from Table1
group by gs_cycle_no

如果你不这样做,试试这个:

with cte as
(
    select
        gs_cycle_no,sum(cast(left(total_hours,len(total_hours) - 3) as int)) as h,sum(cast(right(total_hours,2) as int)) as m
    from Table1
    group by gs_cycle_no
)
select
    gs_cycle_no,cast(h + m / 60 as nvarchar(max)) + ':' +
    right('00' + cast(m % 60 as nvarchar(max)),2)
from cte

sql fiddle demo

原文地址:https://www.jb51.cc/mssql/76695.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐