如何计算总小时数

时间:2011-01-01 12:52:33

标签: sql sql-server

使用SQL Server 2005

表1

ID Time 

001  060000 (HHMMSS)
001  080000
002  100000 
002  090000 
002  120000
.....

Intime,Outtime数据类型为varchar。

我想按ID

计算总时间组

如何计算总小时数。

需要查询帮助

2 个答案:

答案 0 :(得分:4)

根据数据给出,最后扔掉0000,改为int,SUM

SELECT
    SUM(CAST(REVERSE(SUBSTRING(REVERSE(TimeCol),5,8000) as int), ID
FROM
    MyTable
GROUP BY
    ID

如果您有分钟但没有秒数,您可以修改它以在结尾处丢弃00,分成小时+分钟并总结...

问题是:

  • 将HHMMSS字符串分解为单独的HH,MM和SS
  • 然后找到一个共同的单位(例如整秒,但我看了数据所以选择整个小时)
  • SUMming以提供总公共单位
  • 更改为所需的输出单位(在这种情况下为小时)

答案 1 :(得分:2)

如果您将这些数据存储为几分钟(或者如果您真的需要那么详细的数据,则可以将这些数据存储在批次中)。

因此,我怀疑你需要在添加它们之前将所有数据标准化为几分钟等,因为我不相信你能以这种方式有意义地对时间字段求和。

http://www.dbforums.com/microsoft-sql-server/1113948-sum-time-sql-server.html上讨论了各种变通方法 - 所有这些变通方法在尝试对它求和之前都会转换时间字段。