SQL Server中的小时,分​​钟和秒的时差

时间:2017-01-02 06:56:46

标签: sql-server

我需要找到两列之间的时差,包括小时,分钟和秒。

这是我表中的两个日期时间列:

STOP_TIME                      Start_Time
------------------------------------------------------
2016-05-10 03:31:00.000        2016-05-10 02:25:34.000

我计算了停止时间和开始时间的第二个差异。 3926是第二个区别。

我需要将其转换为时间格式hh:mm:ss

3 个答案:

答案 0 :(得分:5)

Sql server支持在Datetime数据类型上添加和减去,所以你可以简单地做这样的事情:

DECLARE @StartTime datetime = '2016-05-10 02:25:34.000',
        @EndTime datetime = '2016-05-10 03:31:00.000'

SELECT CAST(@EndTime - @StartTime as Time) As TimeDifference       

结果:01:05:26

注意:正如TT在他的评论中正确地写道,只有@EndTime@StartTime之间的差异小于24小时才能投射到时间。 如果您需要比较更远的时间,则需要使用建议的其他解决方案之一。

答案 1 :(得分:4)

这应该适合你 -

DECLARE @STOP_TIME DATETIME = '2016-05-10 03:31:00.000',
        @Start_Time DATETIME = '2016-05-10 02:25:34.000'
SELECT 
     RIGHT('0' + CAST(DATEDIFF(S, @Start_Time, @STOP_TIME) / 3600 AS VARCHAR(2)),2) + ':'
   + RIGHT('0' + CAST(DATEDIFF(S, @Start_Time, @STOP_TIME) % 3600/60 AS VARCHAR(2)),2) + ':'
   + RIGHT('0' + CAST(DATEDIFF(S, @Start_Time, @STOP_TIME) % 60 AS VARCHAR(2)),2)

答案 2 :(得分:0)

计算一下

Hours = Seconds/3600
Minutes = (Seconds % 3600) /60
Seconds = (Seconds % 3600) % 60