我有一个问题,试图相互减去两次(使用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
答案 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)