使用时间戳过滤/ WHERE

时间:2016-06-16 14:39:33

标签: sql sql-server tsql

我正在尝试使用我的datetime变量创建一个过滤器,以查看一天中某段时间内发生的任何事情,该变量的日期和时间格式如下:

  

2009-07-30 16:05:15

如何创建一个WHERE子句,让我查看该变量的时间戳在某些小时之间的任何条目,例如第二天的17:00:00到07:00:00。

Imagine将是两个独立的条款

  

> 17:00:00 OR<分别是07:00:00

3 个答案:

答案 0 :(得分:2)

使用DATEPART功能

WHERE DATEPART(hh, [Date Column]) between 7 and 17

WHERE NOT DATEPART(hh, [Date Column]) between 7 and 17

过夜

答案 1 :(得分:1)

使用datepart()功能可以解决您的特定问题,因为它基于小时数。更通用的解决方案是处理时间问题。例如:

where cast(col as time) >= '17:00:00' and cast(col as time) < '17:30:00'

答案 2 :(得分:0)

你可以像这样过滤:

where time_field_name between first_value and last_value

试试这个:

SELECT FORMAT(CAST(time_field_name  as datetime2(0)), N'HH:mm:ss')

 FROM time_table 

 where FORMAT(CAST(time_field_name  as datetime2(0)), N'HH:mm:ss') between '7:00:00' and '17:00:00'