我需要在两个日期之间获得差异为HH:MM:SS格式我试过这个
Select UserId,StartTime,EndTime, DATEDIFF(HOUR, StartTime, EndTime) AS Hours,
DATEDIFF(MINUTE, StartTime, EndTime) AS Minutes,
DATEDIFF(SECOND, StartTime, EndTime) AS Seconds
from Responses
但它不能很好地工作,因为它分别计算小时,分钟和秒。 例如:如果分钟大于60分钟,则不会改变小时
1:70:00而不是2:00:00
我需要大于60分钟的分钟数增加新的小时,当大于60秒的秒数增加新的分钟时
谢谢,
答案 0 :(得分:0)
您可以尝试这种方式:
SELECT Userid, StartTime, EndTime, convert(time(0),StartTime - EndTime) AS [Time in hh:mm:ss]
FROM Responses
答案 1 :(得分:0)
您可以使用强制转换功能代替DATEDIFF,类似
声明@StartDate datetime,@ EndDate datetime
选择@StartDate =' 10/01/2012 08:40:18.000',@ EndDate =' 10/04/2012 09:52:48.000'
选择CAST((@ EndDate- @ StartDate)作为时间(0))' [hh:mm:ss]'
`
答案 2 :(得分:0)
declare @D1 datetime = '1jan2016 12:02:55'
declare @D2 datetime = '5jan2016 04:11:35'
Select @D2 - @d1,
Format(datediff(second, 0, @D2 - @d1)/3600, '0') + ':' +
Format(datediff(second, 0, @D2 - @d1)%3600 / 60, '00') + ':' +
Format(datediff(second, 0, @D2 - @d1)%3600 % 60, '00')