SQL Server如何获得两个日期之间的区别HH:MM:SS

时间:2016-10-20 14:33:31

标签: sql-server database date datetime

我需要在两个日期之间获得差异为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秒的秒数增加新的分钟时

谢谢,

3 个答案:

答案 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')