2014-03-01 84 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

相關問題