一个表在float数据类型中具有一个时间列,其给出方式为:
40m
11m
2m
0m
3m
1m
1m
如何求和这些值以小时和分钟为单位?
答案 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;
该演示表明,即使您的专栏中的分钟数应该超过24小时,该逻辑仍然成立。
答案 1 :(得分:0)
您可以使用dateadd()
,然后将结果回溯到某个时间:
select cast(dateadd(minute, sum(col), 0) as time)
from t;
注意:此操作最多只能使用23:59:00
。 SQL Server时间类型不支持更大的值。
Here是一个学期。