我的网站发布了我镇(意大利)发生的事件(音乐,戏剧,展览......)。所有活动都有开始日期和结束日期。 (仅持续一天的活动将具有相同的日期)。
所有事件都可能显示如下:
SELECT * FROM events WHERE end_date >= '".date("Y-m-d")."' ORDER BY end_date
上述声明将正确列出从今天开始的所有当前事件。
但是有一些事件可能会在未来的某个时间点发生,并持续一天(从 - 到事件),例如:
start_date = 2014-08-12 and end_date = 2014-08-23
具有上述日期的事件将在最后列出,因为MySQL查询说:
ORDER BY end_date
可以查询MySQL,以便它列出所有当前事件以及所有那些“从 - 到”事件,这些事件在其日期范围内的日期等于今天ONLY ONCE?
例如,假设今天= 2014-08-06 ,并且有很多事件发生在同一天:
Event 1: start_date=2014-08-06 / end_date=2014-08-06
Event 2: start_date=2014-08-07 / end_date=2014-08-07
Event 3: start_date=2014-08-08 / end_date=2014-08-08
Event 4: start_date=2014-08-09 / end_date=2014-08-09
还有另一个具有以下日期范围的事件:
Event 5: start_date=2014-08-01 / end_date=2014-08-20
日期包括事件1-4的日期
预期结果应为:
活动5 - 活动1 - 活动2 - 活动3 - 活动4
事件5 列在第一个位置,因为它的日期范围包含事件1 的相同日期,但 strong>必须仅列出 ONCE ,以避免每次发生所有其他事件(2-4)时重复。
必须避免这种情况:活动5 - 活动1 - 活动5 - 活动2 - 活动5 - 活动3 - 活动5 - 活动1 - 活动5 。
答案 0 :(得分:0)
SELECT * FROM events WHERE end_date> ='“。date(”Y-m-d“)。”'ORDER BY end_date
上述声明将正确列出从今天开始的所有当前事件。
没有。这将返回从今天开始的所有活动。其中一些开始于过去。
答案 1 :(得分:0)
可能会有效。
SELECT * FROM events WHERE "date("%Y-%m-%d")" BETWEEN start_date AND end_date