如何计算两个日期时间之间的小时和分钟差?

3
如果我有两个这样的日期时间:
transtime_in, transtime_out

如何获取以下日期时间格式之间的差异:
hh:mm

I use

DATEDIFF(hour, transtime_in, transtime_out) 

但我只能得到工作时间。

3个回答

7
尝试这个 -
查询:
DECLARE 
      @transtime_in DATETIME
    , @transtime_out DATETIME

SELECT 
      @transtime_in = '2013-05-19 08:58:07.000'
    , @transtime_out = '2013-05-19 16:40:53.000'

SELECT LEFT(CONVERT(VARCHAR(10), @transtime_out - @transtime_in, 108), 5)

输出:

-----
07:42

非常感谢,您可以解释一下为什么是“108”吗? - Anyname Donotcare
2
因为,如果您使用108格式的CONVERT函数,您将获得HH:MM:SS,并通过使用LEFT函数将其连接到HH:MM。可能,这是最简单的方法。 - Devart
1
108 是 hh:mm:ss 的格式。您可以在此处找到更多信息:http://www.w3schools.com/sql/func_convert.asp - Elmer
2
+1 非常好的答案 - 呈现得非常棒。"style argument" 是我以前从未完全理解过的东西 - 但现在我已经明白了 - 即使我一直在定期使用它将时间转换为 DateKeys CONVERT(CHAR(8),GETDATE(),112) - whytheq
我可以问一下吗?为什么在varchar(10)行中会出现错误? - d_unknown

1
declare @D1 datetime
declare @D2 datetime

set @D1 = '2014-03-25 00:00:00.000'
set @D2 = '2014-03-24 17:14:05.000'

--select datediff(hour, cast(@D1 as time(0)), cast(@D2 as time(0)))
SELECT LEFT(CONVERT(VARCHAR(10), @D2 - @D1, 108), 8)

0
declare @D1 datetime
declare @D2 datetime

set @D1 = '2014-03-25 00:00:00.000'
set @D2 = '2014-03-24 17:14:05.000'

SELECT LEFT(CONVERT(VARCHAR(10), @D1 - @D2, 108), 8)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接