我需要找到两列之间的时差,包括小时,分钟和秒。
这是我表中的两个日期时间列:
STOP_TIME Start_Time
------------------------------------------------------
2016-05-10 03:31:00.000 2016-05-10 02:25:34.000
我计算了停止时间和开始时间的第二个差异。 3926是第二个区别。
我需要将其转换为时间格式hh:mm:ss
。
答案 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