2014-07-11 170 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"

相關問題