高效比较 MySQL 中的日期范围
本指南演示了如何有效比较 MySQL 中的日期范围,重点是确定目标范围和一组预定义范围之间的重叠。
简化的方法
不是直接比较重叠范围,更有效的方法是检查非-重叠。 这简化了逻辑过程。
理解重叠范围
当预定义范围相对于目标范围满足以下条件之一时,就会发生重叠:
识别不重叠的范围
相反,非重叠范围满足以下条件:
重叠范围的 SQL 查询
要识别 periods
表(包含 range_start
和 range_end
列)中与目标范围(@check_period_start
、@check_period_end
)重叠的所有行:
<code class="language-sql">SELECT * FROM periods WHERE NOT (range_start > @check_period_end OR range_end < @check_period_start);</code>
NOT
运算符反转条件,有效地仅选择存在重叠的行。
替代查询:直接重叠检查
或者,直接选择重叠行:
<code class="language-sql">SELECT * FROM periods WHERE range_start <= @check_period_end AND range_end >= @check_period_start;</code>
此查询直接检查预定义范围开始是否早于或等于目标范围结束,以及预定义范围结束是否晚于或等于目标范围开始。 对于某些人来说,这种方法可能更具可读性。
以上是如何高效比较 MySQL 中的日期范围?的详细内容。更多信息请关注PHP中文网其他相关文章!