Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengenal pasti julat tarikh bertindih dengan cekap dalam MySQL?

Bagaimana untuk Mengenal pasti julat tarikh bertindih dengan cekap dalam MySQL?

Barbara Streisand
Barbara Streisandasal
2025-01-18 08:16:11718semak imbas

How to Efficiently Identify Overlapping Date Ranges in MySQL?

Algoritma perbandingan julat tarikh MySQL

Dalam MySQL, kita selalunya perlu menentukan sama ada julat tarikh tertentu bertindih dengan mana-mana julat tarikh dalam senarai yang disimpan. Untuk menyelesaikan masalah ini, mari kita pertimbangkan hubungan antara dua julat tarikh:

  • Sepenuhnya Mengandungi: Satu julat jatuh sepenuhnya dalam julat lain.
  • Mula atau tamat bertindih: Julat berkongsi sempadan dengan julat lain.
  • Tidak bertindih: Tiada sempadan dikongsi, satu julat berakhir sebelum yang lain bermula.

Kenal pasti julat bertindih

Kuncinya ialah mencari julat yang tidak bertindih. Dengan mentakrifkan keadaan ini secara negatif, kita boleh mengecilkan fokus kepada kriteria berikut:

  • Masa mula adalah lewat daripada masa tamat julat sasaran.
  • Masa tamat lebih awal daripada masa mula julat sasaran.

Dalam SQL, hasil penukaran logik ini ke dalam bentuk pertanyaan adalah seperti berikut:

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

Dengan membalikkan logik, kami boleh mendapatkan julat bertindih seperti berikut:

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

Atas ialah kandungan terperinci Bagaimana untuk Mengenal pasti julat tarikh bertindih dengan cekap dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn