查找start_date和end_date之间的日期

时间:2010-03-22 20:28:44

标签: mysql

我有一个记录了开始和结束时间的事件表。我想查找特定日期发生的所有事件。一些事件在一年前开始,有些事件将继续向前发展。

我希望能够选择2010年5月20日的例子并查找该日期发生的所有事件。

4 个答案:

答案 0 :(得分:3)

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

此查询将返回start_date所在的日期或2010年1月1日之后的所有日期,并且end_date将于2010年6月30日或之前返回。

答案 1 :(得分:2)

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

这将为您提供在特定日期发生的所有事件,即使开始日期或发送日期在不同日期也是如此。

答案 2 :(得分:2)

...试

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())))

将在2010年3月之后将您的活动带到未来,之前没有任何事情。

或..

WHERE (start_date_var) BETWEEN start_date AND end_date

简单地说,(传递的值)在任何事件开始和结束日期之间。

这些应该产生结果。这取决于您执行查询的方式。您是否接受表单/网址参数来更改日期?

虽然您希望所有日期都未过期但又想要在特定日期发生日期,这令人困惑。你从哪里获得start_date?

答案 3 :(得分: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