2014-07-11 127 views
0

请帮我选择两个日期之间的程序。在两个日期之间进行选择的SQL查询

要求是开始日期和结束日期将分为两列。取决于它们之间的范围记录应该被选中。

让我们一个真实的例子..

Example output

的日期被分成两个:StartDateEndDate

如果我要选择哪个& 7月10日之间在7月14日的比赛,那么我可以写这样的查询:

SELECT * FROM tblMatch 
WHERE (StartDate BETWEEN '7/9/14' AND '7/13/14') 
and (EndDate BETWEEN '7/9/14' AND '7/13/14') 

但如果错误在规定的范围内,我需要选择基于StartDate或结束日期的正确匹配。

如果用户搜索与:

    StartDate:7/10/14 -- 10 July 2014 
       EndDate: 7/15/14  -- 15 July 2014 
         or 
       StartDate:7/8/14  -- 8 July 2014 
       EndDate: 7/14/14  -- 14 July 2014 

接着范围之间的匹配是第一个匹配在我的情况下应选择!!

UPDATE我的起始日期和结束日期是SQL日期数据类型只有...所以请你想想,才说是转换的问题......基于范围

它们之间的事件应该被选中。

回答

0
DECLARE @StartDate1 DATETIME = 7/10/14; 
DECLARE @EndDate1 DATETIME = 7/15/14; 

DECLARE @StartDate2 DATETIME = 7/8/14; 
DECLARE @EndDate2 DATETIME = 7/14/14; 

SELECT * FROM tblMatch 
WHERE (StartDate > @StartDate1 AND EndDate < @EndDate1) OR (StartDate > @StartDate2 AND EndDate < @EndDate2); 
+0

Thanx for ur但答案,其实我没有使用4个参数来搜索.. StartDAte1,EndDate1或StartDate2,EndDate2 ... – user3640046

1

请从参阅日期格式的详细信息:Date format URL

-- 101 is forma "mm/dd/yy": 

select * from tblMatch 
where (CONVERT(VARCHAR(8),StartDate,101) between '07/09/14' and '07/13/14') 
and (CONVERT(VARCHAR(8),EndDate,101) between '07/09/14' and '07/13/14') 
+0

我的问题是不是与查询我试过..我想正确的我的要求你明白如果你再读问题 – user3640046

+0

这是正确的没有问题的逻辑。仅在日期格式范围内存在问题。请检查并重播。 – jainvikram444

+0

我的StartDate和EndDate列只有sql日期类型...没有必要进行转换... – user3640046

0
select * from tblMatch 
where (CONVERT(VARCHAR(10),StartDate,110) between '12/01/14' and '12/31/14') 
and (CONVERT(VARCHAR(10),EndDate,110) between '12/01/14' and '12/31/14') 

以下日期格式为"MM/dd/yyyy"

相关问题