Sql 添加大于24小时的时间值

Sql 添加大于24小时的时间值,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我试图对一些时间值求和,当我的和超过24小时时,它从总数中减去24 以下是我的SQL: SELECT UserID, First_NM, Last_NM, MgrName, CONVERT(varchar(5), DATEADD(minute, SUM(OnProd)/60, 0), 114) as OnProd, CONVERT(varchar(5), DATEADD(minute, SUM(OffProd)/60, 0), 114) as

我试图对一些时间值求和,当我的和超过24小时时,它从总数中减去24

以下是我的SQL:

SELECT 
    UserID,
    First_NM,
    Last_NM,
    MgrName,
    CONVERT(varchar(5),  DATEADD(minute, SUM(OnProd)/60, 0), 114) as OnProd,
    CONVERT(varchar(5),  DATEADD(minute, SUM(OffProd)/60, 0), 114) as OffProd, 
    CONVERT(varchar(5),  DATEADD(minute, SUM(OnProd+OffProd)/60, 0), 114) as SumProd    

FROM (
    SELECT 
        UserID,
        First_NM,
        Last_NM,
        MgrName,
        CASE WHEN WorkUnitType LIKE '%On%' THEN DATEDIFF(s, DateStart, DateEnd) ELSE 0 END AS OnProd,
        CASE WHEN WorkUnitType LIKE '%Off%' THEN DATEDIFF(s, DateStart, DateEnd) ELSE 0 END AS OffProd

    FROM dbo.vw_mos_DPL_Reporting

    ) a 
Group By 
    UserID,
    First_NM,
    Last_NM,
    MgrName
这是我当前的输出:

UserID         First_NM     Last_NM     OnProd  OffProd SumProd
A05878         STEVEN       LANTE       22:28   09:55   08:23
ARGLIN         ARNIE        FREEL       00:00   00:00   00:00
B96695         JENNIFER     LARK        21:32   18:49   16:21
PATYOI         PATTY        TROTTER     04:29   00:03   04:32

我该如何着手解决这个问题?为了清楚起见,我想展示一下38:24或者任何实际的总和。总小时数:总分钟数/60

这有点不雅观,但您可以尝试分别计算分钟数和小时数,并将它们串联起来,例如,代替

CONVERT(varchar(5),  DATEADD(minute, SUM(OnProd)/60, 0), 114) as OnProd
试一试


您也必须对OffProd和SumProd执行相同的操作。

在这4个人中,谁的
SumProd
错误?您正在从看起来像datetime的内容中进行选择,但使用datediff转换为秒(持续时间),以便您可以使用dateadd将其添加到0以将其转换回日期?在我看来,你是在计算持续时间的差异,而不是日期时间的差异。实际要求是什么?DATEADD(minute,SUM(OnProd+OffProd)/60,0)将返回天、小时和分钟,仅用114显示小时和分钟只是截断了天部分。对于第一个用户Steven,SumProd字段应等于32:23(在基于时间的环境中为22:28和9:55之和)。第三个用户Jennifer应该使用相同的逻辑将SumProd设置为40:21。
SELECT CAST(SUM(OnProd)/3600 AS VARCHAR(6)) + ':' + RIGHT('00' + CAST((SUM(OnProd) % 3600) / 60 AS VARCHAR(6)),2) AS OnProd