2010-03-22 69 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

相关问题