2012-12-04 166 views
0

我一個MySQL表這樣的期間:檢查是否包含兩個日期

| ID | ID_period | date_start | date_end | 
    | 1 | 1  | 0000-07-01 | 0000-08-31 | 
    | 2 | 2  | 0000-09-01 | 0000-10-30 | 
    | 3 | 3  | 0000-11-01 | 0000-12-28 | 
    | 4 | 4  | 0000-11-01 | 0000-03-31 | 

我如何可以選擇包含在此期間0000/07/14之間的標識 - 0000/08/25 ?

date_start和date_end列是DATE格式。

問題是,如果我搜索一個時期(包括和相交),即:從0000-12-12到0000-01-25我從選擇0記錄,我猜是今年'0000'..我該如何解決它?

另一個問題是,如果我搜索一個像11-01到12-31這樣的時期,我得到了0個結果..因爲最後一天od_date在date_end是28 ..但是如果我搜索一個時期11-01到12 -31是因爲我希望所有的記錄,包括..所以我想獲得具有記錄id = 3,ID = 4

目前IM

使用以下查詢:

SELECT ... WHERE '12' BETWEEN MONTH(date_start) and MONTH(date_end) 
AND '15' BETWEEN DAY(date_start) and DAY(date_end) 
AND '03' BETWEEN MONTH(date_start) and MONTH(date_end) 
AND '28' BETWEEN DAY(date_start) and DAY(date_end) 
+0

您是指所有與該時期重疊或完全包含在該時期內的IDS?在你的例子中,這似乎並不重要,但可能在你的真實數據中。 –

+0

「包含」是什麼意思?完全在或相交? –

+0

問題是,如果我搜索一個時期(包括和相交),即:從0000-12-12到0000-01-25我從選擇0記錄,我猜是'0000' ..我如何解決它? – Luke

回答

1
SELECT * 
FROM mytable 
WHERE date_start BETWEEN '0000-07-14' AND '0000-08-25' 
     OR date_end BETWEEN '0000-07-14' AND '0000-08-25' 
     OR (date_start<'0000-07-14' AND date_end>'0000-08-25') 
+1

問題是,如果我搜索一個時期(包括和相交),即:從0000-12-12到0000-01-25我從選擇0記錄,我猜是'0000' ..我如何解決它? – Luke

+0

12-12到01-25?結束日期是否可以小於開始日期? –

+0

廢話..所以如何找到像12-12到01-15這樣的時期的記錄呢? – Luke

相關問題