如何在一个时间范围内获取tsql总小时数

时间:2017-11-13 02:51:40

标签: sql sql-server tsql

提前致谢。

我的问题是我的开始时间(2017-10-09 20:28:05.997)和结束时间(2017-10-10 05:37:12.413)在我的桌子上

我想查看使用tsql的小时数将介于(2017-10-09 22:00 00:00)和(2017-10-10 06:00:00.000)之间,这是不变的。

谢谢!

2 个答案:

答案 0 :(得分:1)

我认为datediff()可以满足您的需求。这有用吗?

select datediff(hour, starttime, endtime) as hours

由于datediff()仅计算边界(小时边界位于小时的顶部),因此有时最好使用较小的单位然后进行算术运算。

例如,十进制小时非常接近:

select datediff(second, starttime, endtime) / (60 * 60.0) as decimal_hours

答案 1 :(得分:0)

你应该这样做:

Declare @start_time datetime;
Declare @start_range datetime;
Declare @end_range datetime;
Declare @end_time datetime;

If @start_range < @start_time 
Begin
  Set @start_range =@start_time;
End

If @end_time  < @end_range 
Begin
  Set @end_range =@end_time;
End

Select datediff(hour, @start_range, @end_range) 

在范围变量中,您可以设置要查找的固定范围