2016-12-29 28 views
3

我發現對堆棧溢出下面的公式已經幫我總結的時間值,稍有調整之後的作品的輝煌:SQL服務器 - 點心時間顯示問題

SELECT CAST(t.TotalHours/3600 AS VARCHAR(2)) + ':' 
    + CAST(t.TotalHours%3600/60 AS VARCHAR(2)) + ':00' 
FROM (SELECT SUM(DATEDIFF(S, '00:00', WorkingHours)) AS TotalHours 
     FROM workhour) t 

SQL How to sum times from Time datatype columns in hh:mm:ss

但是我現在在格式方面有問題。當我運行我的數據這個查詢,它返回的時間和格式如下:HH:M:SS (32:0:00)

我的數據:

WorkingHours 
    05:30 
    06:00 
    05:30 
    08:00 
    07:00 

預期輸出:

TotalHours 
    32:00:00 

正如你會發現,我的數據不包含秒,所以我在末尾添加了一個字符串。其會議紀要似乎是導致我的一個問題。

問: 是否有辦法來調整上述forumla這樣我就可以得到總顯示爲HH:MM:SS -> 32:00:00

注意時分秒字段返回0,就會出現此,或有值小於10 ...

Thankyou提前幫助。我正在使用SQL Server 2016數據中心,並將數據存儲在我的表中,格式爲HH:MM,名爲WorkingHours。

工作答:

SELECT CAST(t.TotalHours/3600 AS VARCHAR(2)) + ':' + 
    RIGHT('000' + CAST (t.TotalHours%3600/60 AS VARCHAR(2)), 2) + ':00' 
FROM (SELECT SUM(DATEDIFF(S, '00:00', TotalHours)) AS TotalHours 
     FROM workhour) t 
+0

您能否顯示您的原始數據和預期輸出 – TheGameiswar

+1

要有條不紊。分別獲取小時,分鐘和秒鐘,然後對其進行協調。 –

+0

我的數據是我的表中的原始數據,並且預期的輸出已被添加到 – Crezzer7

回答

4

您可以使用:

RIGHT('000' + CAST (t.time_sum%3600/60 AS VARCHAR(2)), 2) 

這將需要的 '000' 串聯和計算的分鐘2最右邊的字符。所以如果你的分鐘少於10分鐘,前面加上0。產生於01 - 60。 我總是比我需要更多的使用0,只是因爲它沒關係,而且我永遠都是安全的。

+0

得到了它,生病發布在上面,感謝您的幫助 – Crezzer7

+1

@ Crezzer7只記得在幾個小時內完成。 – Stephen

1
Right('0'+cast(yourvalue as varchar(2)),2)