首页 > 解决方案 > 如何将时间总和作为浮点数

问题描述

一个表有一个浮点数据类型的时间列,如下所示:

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

如何将这些值相加以在小时和分钟内得到它?

标签: sqlsql-serversql-server-2008

解决方案


您可以使用 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;

演示

该演示表明,即使您的列中的分钟数应该超过 24 小时,该逻辑仍然有效。


推荐阅读