2014-03-01 60 views
3

我已经表叫Master,我需要所有匹配的日期的所有可能的记录按照用户输入@FromDate@Todate ....之间有两个日期条件

主表之间:

ID FromDate ToDate 
1 18/03/2014 18/03/2014 
2 01/03/2014 05/03/2014 
3 06/03/2014 08/03/2014 

我的查询:

select ID 
from master M 
where M.FromDate between('10/03/2014') and ('17/03/2014') 
    or M.ToDate between ('10/03/2014') and ('17/03/2014') 

用户输入:

FromDate  ToDate 
01/03/2014 06/03/2014 
01/03/2014 31/03/2014 
09/03/2014 09/03/2014 

预期输出:

2,3 
1,2,3 
No Records 

回答

5

我得到了解决:

SELECT ID 
FROM master M 
WHERE ((M.FromDate BETWEEN '10/03/2014' AND '17/03/2014') 
    OR (M.ToDate BETWEEN '10/03/2014' AND '17/03/2014')) 

括号是续集服务器非常重要.....

0

试试这个

select ID from master M where (M.FromDate>='10/03/2014' M.FromDate<'17/03/2014') or (M.ToDate>='10/03/2014' and M.ToDate<'17/03/2014'); 
+0

没有条件是不正确的,我需要在查询所有条件的解决方案。 .. – Pradeep

0

你忘了把括号... SQL将很难该条件是...

SELECT ID 
FROM master M 
WHERE (M.FromDate BETWEEN '10/03/2014' AND '17/03/2014') 
OR (M.ToDate BETWEEN '10/03/2014' AND '17/03/2014') 
+0

没有条件是不正确的,我需要在查询中的所有条件的解决方案... – Pradeep

+0

你有条件字段作为日期数据类型? –

+0

实际上我使用了Column有datetime数据类型,我也创建了用户定义的函数,用于只投射日期和删除时间部分...所以只有条件是不正确的..... – Pradeep

相关问题