小时。分钟性动作

时间:2015-01-30 10:08:03

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

我有一个包含2列的表格,小时和总时数,都是数字(5,2),我想制作所有行的SUM。

如下图所示,列之间的区别在于,第一列包含六十进制格式的分钟,而第二列包含以厘米为单位的分钟(minutes : 60 = x : 100)

hours and minutes sum

独立于列和格式,我正在使用,如何以 sexagesimal 格式获取所有行的SUM?

注意:
1)我正在使用SQL SERVER 2008.
2)我必须使用数字(5,2)格式作为两列的INPUT。

2 个答案:

答案 0 :(得分:1)

查看您的数据,您可以通过将十进制列相加并将结果转换为六十进制格式来快捷方式

select cast(12.71 as int)+(12.71 - cast(12.71 as int))* 60/100

或者你可以将sexagesimal格式列转换为十进制,并像这样总和

select Sum(cast(12.43 as int) + (12.43 - cast(12.43 as int)) * 100/60.00)

然后应用上面的内容将其转换回sexagesimal格式

答案 1 :(得分:0)

-- As suggested by jarlh and by user3540780 I resolved with this:

DECLARE @Hours as Table(
    TotalHours numeric(5,2)
)

INSERT INTO @Hours VALUES(12.81)
INSERT INTO @Hours VALUES(3.71)
INSERT INTO @Hours VALUES(11.12)
INSERT INTO @Hours VALUES(1.01)
INSERT INTO @Hours VALUES(6.30)
INSERT INTO @Hours VALUES(9.88)
INSERT INTO @Hours VALUES(10.91)
INSERT INTO @Hours VALUES(9.88)
INSERT INTO @Hours VALUES(0.28)

SELECT CAST(SUM((CAST(TotalHours as int)) + ((TotalHours - CAST(TotalHours as int)) * 60/100)) as numeric(5,2)) as SumSexagesimalHours
FROM @Hours