MySQL で重複する日付範囲を特定する
問題:
イベント セッションとそれぞれの開始日と終了日。セッション間で競合が発生しないようにすることを目指しています。具体的には、指定された日付範囲内で新しいセッションを挿入しようとするときに、重複するセッションを検索します。
クエリ:
潜在的な競合を特定するには、次のクエリ:
SELECT * FROM session WHERE "2010-01-05" BETWEEN start_date AND end_date OR "2010-01-25" BETWEEN start_date AND end_date OR "2010-01-05" >= start_date AND "2010-01-25" <= end_date;
クエリ:
このクエリは、重複の可能性を示す 3 つの条件をチェックします:
代替アプローチ:
正確な結果を保証する代替クエリ:
SELECT * FROM session WHERE new_start < existing_end AND new_end > existing_start;
説明:
このクエリは、4 つの要素に基づく論理評価を利用します。変数:
新しいセッションの開始日が既存のセッションの終了日より前である場合、クエリは重複するセッションを返します。新しいセッションの終了日は、既存のセッションの開始日より後です。
以上がMySQL で重複する日付範囲を特定する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。