2010-03-22 67 views
2

我有一個記錄開始和結束時間的事件表。我想查找在特定日期發生的所有事件。一些事件一年前開始,一些事件將繼續前進。查找start_date和end_date之間的日期

我希望能夠選擇例如2010年5月20日,並查找在該日期發生的所有事件。

回答

3
SELECT * FROM yourTable 
    WHERE start_date >= '2010-01-01' AND end_date <= '2010-06-30' 

這個查詢將返回所有日期,其中起始日期爲上或2010年1月1日之後,日期和結束日期是上月30日或6月以前,2010年

+1

這會給我所有這些日期之間的事件,但是,其中一些事件將在2010年2月和5月之間結束,我不希望過期事件顯示。 – Margaret 2010-03-23 15:28:52

1

假設你已經輸入的參數命名@start_date和@end_date和你想找到重疊該範圍內的任何事件:

select * 
    from TableName 
where @start_date between start_date and end_date 
    or @end_date between start_date and end_date 
+0

我在搜索頁面上的代碼如下: $ SearchResult = mysql_query(「SELECT * FROM events WHERE start_date> ='$ start_date'and end_date <='$ end_date'」)或die(mysql_error()); 而在日曆頁面上我有: $ cal-> addEvent('',2010,3,27,'search/eventSearch.php?start_date = 2010-03-27 & end_date = 2010-03-27' ); 我有一種感覺,我正在做一些完全錯誤的事情。我希望有一個人可以幫助我。請。 – Margaret 2010-03-23 15:43:47

+0

好吧,給出兩個輸入,參見上面的變化。您可以使用$ start_date而不是@start_date,具體取決於您的php.ini。 – brianary 2010-03-23 23:33:33

+0

此問題已解決。我在搜索頁上發現了與我發佈的內容無關的錯誤。感謝您的幫助。 – Margaret 2010-03-24 22:48:52

2
select * from TableName 
where '2010-05-20' >= start_date and '2010-05-20' <= end_date 

這會給你的某個特定日期發生的所有事件,即使開始或發送日期是不同的 天。

+0

這不會產生任何記錄。 – Margaret 2010-03-23 19:42:28

2

的Try ...

WHERE (((MONTH(start_date) >= MONTH(NOW())) && (MONTH(end_date) <= MONTH(NOW()))) && YEAR(start_date) >= YEAR(NOW())) 

這將讓你從3/2010什麼。

或..

WHERE ((MONTH(start_date) >= MONTH(NOW())) && YEAR(start_date) >= YEAR(NOW()))) 

會讓你在這之前3/2010之後的事件走向未來,並沒有什麼。

或..

WHERE (start_date_var) BETWEEN start_date AND end_date 

簡單地說,在那裏(通過值)是任何事件之間的開始和結束日期。

這些應該會產生結果。這取決於你如何執行查詢。你接受表單/網址參數來更改日期嗎?

雖然您希望所有日期都沒有過期,但同時也希望發生在特定日期的日期,但這很令人困惑。你從哪裏得到start_date?

+0

這是一個鏈接到一個頁面,它的底部有一個與我的類似的日曆:http://www.torontolife.com。 我希望有人能發表一個關於如何解決這個問題的想法。 – Margaret 2010-03-24 15:15:40

相關問題