2012-04-17 89 views
-2

我需要在sql中計算時間數據類型,以計算員工的月工作時間,這明顯會超過24小時(應該至少爲132小時)。但時間數據類型不會支持大於23:59:59.9999999。但我需要計算每月的工作時間。計算sql中的時間數據類型的總和

+0

爲什麼你會使用'TIME'數據類型來存儲一個時間間隔嗎?使用'DATETIME'或'SMALLDATETIME'存儲開始時間和結束時間,還是在「INT」中存儲分鐘的持續時間不是更有意義? – 2012-04-17 12:35:54

+0

@Aaron Bertrand你是對的,但我的項目經理正在決定。所以我無事可做。 – yeasir007 2012-04-18 12:55:49

回答

2

確定Total working time給出Time數據類型? 您的示例輸入是「時間」不支持的'32:23:00'數據類型 因爲它的範圍是00:00:00.0000000 through 23:59:59.9999999

如果是Time數據類型,那麼你就可以計算出工資作爲克林斯曼狀態:

select cast(cast (100.00 as money) * datediff(second, 0, '23:23:00')/(60.0 * 60.0) as money) 

我投的價值爲貨幣數據類型表明,其可能與DATEDIFF乘以它()函數返回值。

+0

是的,我確定它是時間格式。你的答案是非常好的,但是當小於或等於24時,它不工作。24 – yeasir007 2012-04-17 12:52:12

+1

@ yeasir007:是的,它不起作用,因爲時間數據類型不支持大於23: 59:59.9999999。如果您確信數據類型,那麼您無法處理更大的值。請考慮其他任何數據類型。 – 2012-04-17 13:03:18

+0

如果每天的工作時間可能是8小時,比起我將一個員工的一個月的總工作時間總和明顯超過24小時,那麼我該如何解決這個問題,請建議您是否有任何好主意。 – yeasir007 2012-04-18 03:27:51

1

您可以使用DATEDIFF函數來替換日期。

結果可以與您的薪水相提並論。

SELECT DATEDIFF(minute, '12:00:00', '12:30:00')/60.0 * 100.0 
+0

對不起總工作時間是時間格式而不是日期時間。這是一個月的每日工作時間的總和。一般我需要將每小時工資(如100.00)與總工作時間相乘(如32:23:00,這已經是工作時間的總和,但是是時間格式) – yeasir007 2012-04-17 12:40:50

+0

@ juergen d嗨juergen感謝response.problem現在解決了,我是一個問題來計算時間總和,但現在這是解決。謝謝。 – yeasir007 2012-04-18 12:57:58

1

我試過用這段代碼,現在問題就解決了。

sum(datediff(second, 0, timeYouWantToSum))/3600.0 

會給你的工作小時數爲decimal.Now我能夠通過圓/上/下限,也能修改此總工作小時每hour.Thank與工資乘以你