如何获得浮点数的时间总和

时间:2018-09-18 10:26:27

标签: sql sql-server sql-server-2008

一个表在float数据类型中具有一个时间列,其给出方式为:

40m
11m
2m
0m
3m
1m
1m

如何求和这些值以小时和分钟为单位?

2 个答案:

答案 0 :(得分:1)

您可以使用Gordon的答案,该答案直接利用了SQL Server的内置时间功能。一种替代方法是“蛮力”方法,计算时间列总和所表示的小时和分钟数:

WITH cte AS (
    -- strip off 'm' units and convert to numbers
    SELECT CONVERT(int, REPLACE(time, 'm', '')) AS time
    FROM yourTable
)

SELECT
    CONVERT(varchar(10), FLOOR(SUM(time) / 60)) + ':' +
    CONVERT(varchar(10), FLOOR(SUM(time) % 60)) AS timestamp
FROM cte;

Demo

该演示表明,即使您的专栏中的分钟数应该超过24小时,该逻辑仍然成立。

答案 1 :(得分:0)

您可以使用dateadd(),然后将结果回溯到某个时间:

select cast(dateadd(minute, sum(col), 0) as time)
from t;

注意:此操作最多只能使用23:59:00。 SQL Server时间类型不支持更大的值。

Here是一个学期。