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
Lepaskan: 2025-01-18 08:16:11
asal
716 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan