如何获取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)之间的持续时间 谢谢大家! 我认为如何获取tsql中某个时间范围内的总小时数,sql,sql-server,tsql,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)之间的持续时间 谢谢大家! 我认为datediff()可以满足您的需求。这行吗 select datediff(hour, starttime, endtime) as hours 因为datediff()只计算边
datediff()
可以满足您的需求。这行吗
select datediff(hour, starttime, endtime) as hours
因为datediff()
只计算边界(小时边界在小时的顶部),所以有时最好使用较小的单位,然后进行算术运算
例如,十进制小时非常接近于:
select datediff(second, starttime, endtime) / (60 * 60.0) as decimal_hours
你应该这样做:
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)
声明@start\u time datetime;
声明@start_range datetime;
声明@end_range datetime;
声明@end_time datetime;
如果@start\u范围<@start\u时间
开始
设置@start\u范围=@start\u时间;
终点
如果@end\u时间<@end\u范围
开始
设置@end\u范围=@end\u时间;
终点
选择datediff(小时、@start\u范围、@end\u范围)
在范围变量中,您可以设置要查找的固定范围谢谢您的回复,但我只需要22:00到6:00之间的小时数