2011-11-27 98 views
4

我有一個名爲4個領域(事項標識,EVENT_NAME,event_start_date,event_end_date)MySQL的DATETIME選擇日期

問題是獲取正確的事件

事件MySQL表之間我會得到所有記錄在例如2011/03/01之間的時間段的活動事件到2011/03/30

  1. 事件1開始於2011/03/10並結束2011/03/20(開始和結束 內部)
  2. e通風口2從2011年2月5日開始並於2011年3月23日結束(之前開始,並且 結束於裏面)
  3. 活動3開始於2011/03/25並於2011年5月1日結束(內部開始和結束後 結束)
  4. 事件4開始於2011/01/25並結束2011/10/12(開始之前和之後 結束)

所有事件是在所考慮的時間期內被激活並應被檢索作爲記錄

我不知道如何使它正常工作! 解決方案?建議?想法?

感謝

+0

我的答案最終成爲我無法刪除的評論。 .sigh –

+0

[這個問題有類似的答案適用。] [1] Mark買家給出了這個問題的具體答案。 [1]:http://stackoverflow.com/questions/325933/determine-whether-two-date-ranges-overlap –

回答

3

假設@啓動和@End抱你正在尋找的日期範圍:

SELECT * FROM Events 
    -- Exclude items known to be outside the range 
WHERE NOT ((event_end_date < @Start) OR (event_start_date > @End)) 
+0

美麗!謝謝! – GAVELLO

+0

不客氣。不要忘記,如果任何答案解決了您的問題,您應該點擊該答案旁邊的複選框,讓未來的訪問者知道您的問題是解決問題的答案。 –

2

試試這個:

SELECT 
    event_id, 
    event_name, 
    event_start_date, 
    event_end_date 
FROM events 
WHERE event_start_date <= '2011-03-30' 
AND event_end_date >= '2011-03-01' 
+0

,只會返回開始於2011/03/10事件1結束2011/03/20(開始和結束內部)但不是其他人 – GAVELLO

+0

@GAVELLO:你爲什麼這麼想?你只是猜測還是你嘗試過?如果您嘗試過,請發佈您嘗試的確切查詢。 –

+0

// $ sql ='SELECT * FROM'。 self :: $ table_name。' WHERE event_start_date> =「'。$ start_date。'」AND event_end_date <=「'。$ end_date。'」'; – GAVELLO

0
Select * From temp where mydate >= '2011-03-10' and mydate =< '2011-03-20'; 

+0

不那麼容易,這隻會返回時間段內開始和結束的事件。 – GAVELLO