Heim >Datenbank >MySQL-Tutorial >Wie kann man überlappende Datumsbereiche in MySQL effizient identifizieren?

Wie kann man überlappende Datumsbereiche in MySQL effizient identifizieren?

Barbara Streisand
Barbara StreisandOriginal
2025-01-18 08:16:11718Durchsuche

How to Efficiently Identify Overlapping Date Ranges in MySQL?

MySQL-Algorithmus zum Vergleichen von Datumsbereichen

In MySQL müssen wir oft feststellen, ob sich ein bestimmter Datumsbereich mit einem beliebigen Datumsbereich in der gespeicherten Liste überschneidet. Um dieses Problem zu lösen, betrachten wir die Beziehung zwischen zwei Datumsbereichen:

  • Enthält vollständig: Ein Bereich fällt vollständig in einen anderen Bereich.
  • Start- oder Endüberlappung: Ein Bereich teilt eine Grenze mit einem anderen Bereich.
  • Nicht überlappend: Es gibt keine gemeinsamen Grenzen, ein Bereich endet, bevor der andere beginnt.

Identifizieren Sie überlappende Bereiche

Der Schlüssel besteht darin, die Bereiche zu finden, die nicht überlappen. Indem wir diesen Zustand negativ definieren, können wir den Fokus auf die folgenden Kriterien eingrenzen:

  • Die Startzeit liegt später als die Endzeit des Zielbereichs.
  • Die Endzeit liegt vor der Startzeit des Zielbereichs.

In SQL ist das Ergebnis der Konvertierung dieser Logik in eine Abfrageform wie folgt:

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

Durch Umkehren der Logik können wir überlappende Bereiche wie folgt abrufen:

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

Das obige ist der detaillierte Inhalt vonWie kann man überlappende Datumsbereiche in MySQL effizient identifizieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn