我正在尝试编写一个基于以下内容选择记录的查询:
它们应该在开始日期和结束日期之间。
我有以下记录:
EventId| EventName| Event_Category| Event_StartDate| Event_EndDate|
1 | aaa | 4 | 2014-06-10 | 2014-06-15 |
2 | bbb | 5 | 2014-06-10 | 2014-06-15 |
3 | ccc | 6 | 2014-06-10 | 2014-07-11 |
4 | ddd | 5 | 2014-06-01 | 2014-07-10 |
5 | eee | 5 | 2014-06-10 | 2014-06-014 |
存储过程:
create proc usp_filterevnts @Categoryid int, @StartDate date, @EndDate date
as
begin
select * from Events Where Event_Category=@Categoryid and ( Event_Startdate>@StartDate and Event_Enddate<@EndDate )
end
如果我执行sp为
exec usp_filterevnts 5,'2014-06-09','2014-06-16'
它应显示5Th记录的记录,其开始日期和结束日期在'2014-06-09'和'2014-06-16 ..ie第2记录,第5记录之间。
我的存储过程是否正确?
答案 0 :(得分:0)
select * from Events Where Event_Category=@Categoryid and (Event_Startdate between @StartDate and @EndDate) and (Event_Enddate between @StartDate and @EndDate)
答案 1 :(得分:-1)
(取决于表格大小,日期字段是否有索引......)
您的原始语法,但使用&gt; =和&lt; =包含
之间会导致表扫描,如果您的表很小,这将无关紧要。