首頁 > 資料庫 > mysql教程 > 如何有效率地識別MySQL中重疊的日期範圍?

如何有效率地識別MySQL中重疊的日期範圍?

Barbara Streisand
發布: 2025-01-18 08:16:11
原創
716 人瀏覽過

How to Efficiently Identify Overlapping Date Ranges in MySQL?

MySQL日期範圍比較演算法

在MySQL中,我們經常需要判斷一個給定的日期範圍是否與儲存清單中的任何日期範圍重疊。為了解決這個問題,讓我們考慮兩個日期範圍之間的關係:

  • 完全包含: 一個範圍完全落在另一個範圍之內。
  • 起始或結束重疊: 一個範圍與另一個範圍共用邊界。
  • 不重疊: 沒有共享邊界,一個範圍在另一個範圍開始之前結束。

辨識重疊範圍

關鍵在於找到那些不重疊的範圍。透過否定定義這個條件,我們可以將重點縮小到以下標準:

  • 開始時間晚於目標範圍的結束時間。
  • 結束時間早於目標範圍的開始時間。

在SQL中,將此邏輯轉換為查詢形式的結果如下:

<code class="language-sql">SELECT *
FROM periods
WHERE NOT (range_start > @check_period_end OR range_end < @check_period_start)</code>
登入後複製

透過反轉邏輯,我們可以檢索重疊的範圍,如下所示:

<code class="language-sql">SELECT *
FROM periods
WHERE range_start <= @check_period_end AND range_end >= @check_period_start</code>
登入後複製

以上是如何有效率地識別MySQL中重疊的日期範圍?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板