2013-11-26 49 views
3

我已經寫了一個查詢,但沒有給出正確的答案。我想顯示像這樣 5小時58分鐘+7小時58分鐘= 13小時56分鐘(回答應該13.56 ),但下面的查詢給出15.09SQL Server 2008中小時和分鐘的總和

請與任何其他解決方案回答我。(這裏Effort1爲5小時列,Effort1Minutes爲58分鐘列和相同Effort2是7小時列,Effort2Minutes 58分鐘列。

select CAST((SUM(Effort1)*60+SUM(Effort1Minutes))/60 as float) + 
     (CAST((SUM(Effort1)*60+SUM(Effort1Minutes))% 60 as float))/100 + 
     CAST((SUM(Effort2)*60+SUM(Effort2Minutes))/60 as float) + 
     (CAST((SUM(Effort2)*60+SUM(Effort2Minutes))% 60 as float))/100    
from TimesheetDetails 
+1

這是否提供幫助? http://stackoverflow.com/questions/16662784/minutesinteger-conversion-to-hoursfloat-in-hh-mm-format-in-sql-server-2008?rq=1 – Leptonator

+0

這個問題在SQL Server中不容易解決 - 你必須在那裏解決它嗎? SQL Server有一個'time'數據類型,但是這是一天中的一段時間,而不是一段時間 - 而且你在這裏做的是真的將兩個時間間隔加在一起 ​​- 所以儘管可能一起迴避一些事情(假設你永遠不會24小時溢出),最好用一種具有代表你正在使用的概念的適當類型的語言來完成。 –

+0

請看更新我的回答 –

回答

1

請嘗試以下查詢

select CONVERT(decimal(18,2),SUM(Effort1 + Effort2)) + 
    SUM(Effort1Minutes + Effort2Minutes)/60 + 
    CONVERT(decimal(18,2), (SUM(Effort1Minutes + Effort2Minutes) % 60)/100.00) 
from TimesheetDetails 

我曾與此查詢與SQL Server 2008的測試,以及與SQL Fiddle

+0

親愛的Naresh,我試過你的代碼,哪一個你張貼在頂部。它沒有給出正確的答案(13.6-這是不正確的答案)。答案應該是13.56,我的問題是5小時58分鐘+7小時58分鐘= 13小時56分鐘(答案應該是13.56)。請回答我一些其他解決方案。 – user3035016

+0

什麼是Effort1,Effort2,Effort1Minutes和Effort2Minutes的數據類型? –

+0

Effort1,Effort2是十進制(3,1)和Effort1Minutes,Effort2Minutes是int數據類型 – user3035016