2013-02-13 108 views
2

我只需要采取两个日期时间对象,减去它们以获得以小时为单位的时差。我不关心计算中的日期部分。如果你有1/1/02 11:00:00 - 1/1/02 9:00:00那么我会得到2作为结果。如果差值为30或更大,则舍入为1.即时对象使用的是当前时间和包含其他日期时间对象的列。查找2日期时间之间的时差,无视日期部分

+0

在sql server 2012中,您可以将日期时间作为时间。选择CAST(getdate()作为时间)。如果我在2008年,我至少会尝试一下。然后你可以根据这两个答案使用datediff。 – 2013-02-13 20:44:55

+0

@DanBracuk SQL Server 2008有'TIME'数据类型 – Lamak 2013-02-13 20:59:34

回答

1

在SQL Server 2008中您可以使用TIME数据类型:

SELECT ABS(ROUND(DATEDIFF(MI,CONVERT(TIME,date1), CONVERT(TIME,date2))/60.0,0)) 
+0

这工作就像一个魅力!谢谢 :) – user1732364 2013-02-13 20:46:43

0

如果时间方向事项使用:

SELECT DATEDIFF(hour, <date1>, <date2>) % 24... 

或者,如果你只是想的绝对时间差:

SELECT ABS(DATEDIFF(hour, <date1>, <date2>) % 24)... 
+0

错过了四舍五入。 @拉马克有更好的答案。 – Granger44 2013-02-13 20:47:06