SQL-Datumsbereichsvergleich
Wenn Sie mit in der Datenbank gespeicherten Datumsbereichen arbeiten, muss möglicherweise festgestellt werden, ob ein bestimmter Datumsbereich mit vorhandenen Bereichen überlappt. Dies ist ein wiederkehrendes Problem in SQL-Datenbanken.
Eine Möglichkeit, dieses Problem zu lösen, besteht darin, die Vergleichslogik umzukehren. Anstatt Bereiche zu finden, die sich mit einem bestimmten Bereich überschneiden, suchen wir nach Bereichen, die sich nicht überschneiden. Indem wir Zeiträume identifizieren, die sich nicht überschneiden, können wir schlussfolgern, dass es sich bei den verbleibenden Zeiträumen um diejenigen handelt, die sich überschneiden.
Um diese Logik zu veranschaulichen, betrachten wir das folgende Beispiel:
<code> |-------------------| 与之比较 |---------| 包含在内 |----------| 包含在内,起始时间相同 |-----------| 包含在内,结束时间相同 |-------------------| 包含在内,起始和结束时间相同 |------------| 未完全包含,起始时间重叠 |---------------| 未完全包含,结束时间重叠 |-------------------------| 起始时间重叠,范围更大 |-----------------------| 结束时间重叠,范围更大 |------------------------------| 完全重叠</code>
Wie aus der Abbildung ersichtlich ist, beginnen Zeiträume, die sich nicht mit dem Vergleichszeitraum überschneiden, entweder nach dem Ende des Vergleichszeitraums oder enden vor Beginn des Vergleichszeitraums.
Dagegen fallen Zeiträume, die sich mit dem Vergleichszeitraum überschneiden, in die folgenden Kategorien:
Wenn wir diese Logik in SQL übersetzen, können wir die folgende Abfrage verwenden, um alle Epochen abzurufen, die sich mit einer bestimmten Prüfepoche überschneiden:
<code class="language-sql">SELECT * FROM periods WHERE range_start < @check_period_end AND range_end > @check_period_start;</code>
Indem wir die Logik umkehren, um nicht überlappende Epochen zu finden, können wir diese Epochen effektiv identifizieren und aus den Ergebnissen ausschließen und eine Liste übereinstimmender Epochen hinterlassen.
Das obige ist der detaillierte Inhalt vonWie können wir überlappende Datumsbereiche in SQL effizient identifizieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!