ホームページ > データベース > mysql チュートリアル > MySQL で重複する日付範囲を効率的に特定するにはどうすればよいですか?

MySQL で重複する日付範囲を効率的に特定するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-18 08:16:11
オリジナル
716 人が閲覧しました

How to Efficiently Identify Overlapping Date Ranges in MySQL?

MySQL の日付範囲比較アルゴリズム

MySQL では、特定の日付範囲が保存されたリスト内の日付範囲と重複するかどうかを判断する必要があることがよくあります。この問題を解決するために、2 つの日付範囲間の関係を考えてみましょう:

  • 完全に含まれるもの: 1 つの範囲が別の範囲内に完全に収まります。
  • 重複の開始または終了: 範囲は別の範囲と境界を共有します。
  • 非重複: 共有境界はなく、一方の範囲が他方の範囲の開始前に終了します。

重複する範囲を特定する

重要なのは、重ならない範囲を見つけることです。この条件を否定的に定義することで、焦点を次の基準に絞り込むことができます:

  • 開始時刻が対象範囲の終了時刻より後です。
  • 終了時刻が対象範囲の開始時刻より前です。

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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート