高效率比較 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中文網其他相關文章!