我的应用程序中有开始时间和结束时间。我现在需要检查SQL Query中是否有时间落在这些时间之间。
如何编写查询。
由于
答案 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'