【发布时间】:2015-10-19 08:39:33
【问题描述】:
在阅读了很多关于此的帖子后。我需要一种在两个日期之间选择事件的好方法。可能的情况如下图所示:
我的第一次尝试如下:
SELECT *
FROM events
WHERE
(
start_date BETWEEN $start_select AND $end_select
OR
end_date BETWEEN $start_select AND $end_select
)
OR
(
start_date <= $start_select
AND
end_date >= $end_select
)
问题是查询需要很长时间。
然后我看到了这个帖子:Select data from date range between two dates @dmlukichev 谈到排除所有错误的选项:
类似这样的:
SELECT *
FROM events
WHERE NOT
(
start_date < $start_select
OR
end_date > $end_select
)
但这对我不起作用。
有什么想法吗?
【问题讨论】:
-
如果
start_date > end_date和$start_select > $end_select,最后一个应该可以正常工作。你确定这两个条件都成立吗? -
MySQL 是否支持 OVERLAPS?
-
为什么查询需要很长时间? Is 不是“重”查询。桌子有多大?
start_date和end_date列上是否有索引? -
我正在使用 wordpress,它需要 1sg,只有 3-4 个帖子!
-
请以表格形式提供样本数据。