我有一个查询,但它没有给出正确的答案。我想显示如下这样5小时58分钟+7小时58分钟= 13小时56分钟(答案应该是13.56),但是这下面的查询给出输出13.6 。
请回复我任何其他解决方案。 (Effort1
为5小时列,Effort1Minutes
为58分钟列,同一Effort2
为7小时列,Effort2Minutes
为58分钟列。
select SUM(Effort1 + Effort2) + SUM(Effort1Minutes + Effort2Minutes) / 60 + CONVERT(decimal(18,2), (SUM(Effort1Minutes + Effort2Minutes) % 60) / 100.00)
from TimesheetDetails
答案 0 :(得分:2)
当你拿锤子时,每个问题看起来都像钉子一样。这是一个常见的陷阱,基本上意味着“为每个给定的问题使用正确的工具”。
为什么使用这样的复杂查询来计算时间总和?
为什么您没有两个TIME
列,以后可以使用ADDDATE(d1, d2)
添加
为什么不使用SQL 99标准中定义的TIME INTERVAL
数据类型?
为什么不在几分钟内返回结果,让应用程序将其转换为您选择的格式?
为什么不单独返回小时和分钟,再次让应用程序处理可能由分钟总和引起的额外小时?
正如您所看到的,还有很多其他解决方案可以从根本上解决您的问题,同时还可以为您提供更好的数据库设计。请考虑一下,特别是第一名。