减去第二天的时间(小时)

时间:2014-07-31 15:02:28

标签: sql sql-server ssms

我有一个问题,试图相互减去两次(使用DATEDIFF)并产生总时数。这不是一个大问题,但有时减去的日期会泄漏到第二天 - 因此开始日期将类似于2014年7月30日 - 上午10点,结束日期将是7/31 / 2014年上午6点然后我会得到一个负数。

目前我正在做这样的事情

DATEDIFF (hh,CAST(saa.Time as DATETIME),CAST(saa.DepartureTime as DATETIME)

我只想知道如何避免这样的事情?我想答案是几个小时,但我是否需要创造某种条件?首先减去天数,如果Day> 0然后做点什么?大声笑

另请注意,saa.Time和saa.Departure时间在DateTime

中给出
saa.Time                | saa.DepartureTime
-------------------------------------------------
2014-07-30 10:00:08.097 | 2014-07-31 06:15:12.018

1 个答案:

答案 0 :(得分:2)

如果您得到负数,那么这是因为您的值是纯粹的时间而不是完整的date_time值。

您应该在值中包含日期,以便计算日期差异。

这可能是

datediff(day,saa.Date,saa.DepartureDate)* 24 +

- 这会将日差乘以24得到我的小时数...

datediff(hh,saa.Time,saa.DepartureTime)

例如。

我认为你说上面的内容并没有回答你的问题。

差异是负数 - 你想显示没有负号的数字吗?

所以使用ABS(),例如 SELECT ABS(-1.0), ABS(0.0), ABS(1.0)