如何检查2个给定日期之间的数据范围?

时间:2011-04-12 12:50:26

标签: sql sql-server sql-server-2005

我的应用程序中有开始时间和结束时间。我现在需要检查SQL Query中是否有时间落在这些时间之间。

如何编写查询。

由于

3 个答案:

答案 0 :(得分:11)

这应该适合你。

Select * From MyTable
Where timecreated Between Cast('7/20/08 12:01:01' As DateTime) And Cast('7/20/09 12:01:01' as DateTime)

答案 1 :(得分:1)

我建议在比较日期时不要使用between。结果往往不是你想要的。

  

BETWEEN如果值为,则返回TRUE   test_expression大于或   等于begin_expression的值   并且小于或等于   end_expression具有

演示的测试数据

declare @T table (dt datetime)

insert into @T values('2011-04-12T09:00:00')
insert into @T values('2011-04-12T10:00:00')
insert into @T values('2011-04-12T11:00:00')
insert into @T values('2011-04-12T12:00:00')

使用

之间的查询
select *
from @T
where dt between '2011-04-12T10:00:00' and '2011-04-12T11:00:00'

结果:结果中包含11:00。

dt
2011-04-12 10:00:00.000
2011-04-12 11:00:00.000

使用>=<代替重写查询。

select *
from @T
where
  dt >= '2011-04-12T10:00:00' and
  dt < '2011-04-12T11:00:00'

结果

dt
2011-04-12 10:00:00.000

问题的标题暗示您要检查重叠的日期间隔。如果是这种情况,您可以查看此问题How can I determine in SQL Server if a dateTime range overlaps another

答案 2 :(得分:0)

这也可以: -

 select * from tablename where time between '7/7/2009 12:35:35' and '7/7/2010 23:35:35'