我有一个记录了开始和结束时间的事件表。我想查找特定日期发生的所有事件。一些事件在一年前开始,有些事件将继续向前发展。
我希望能够选择2010年5月20日的例子并查找该日期发生的所有事件。
答案 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