Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Membandingkan Julat Tarikh dengan Cekap dalam MySQL?
Membandingkan Julat Tarikh dengan Cekap dalam MySQL
Panduan ini menunjukkan cara membandingkan julat tarikh dalam MySQL dengan cekap, memfokuskan pada menentukan pertindihan antara julat sasaran dan satu set julat yang dipratentukan.
Pendekatan Ringkas
Daripada membandingkan terus julat untuk pertindihan, kaedah yang lebih cekap melibatkan menyemak bukan-bertindih. Ini memudahkan proses logik.
Memahami Julat Bertindih
Pertindihan berlaku apabila julat yang dipratentukan memenuhi salah satu daripada syarat ini berbanding julat sasaran:
Mengenal pasti Julat Tidak Bertindih
Sebaliknya, julat tidak bertindih memenuhi syarat ini:
Pertanyaan SQL untuk Julat Bertindih
Untuk mengenal pasti semua baris dalam jadual periods
(dengan lajur range_start
dan range_end
) yang bertindih dengan julat sasaran (@check_period_start
, @check_period_end
):
<code class="language-sql">SELECT * FROM periods WHERE NOT (range_start > @check_period_end OR range_end < @check_period_start);</code>
Operator NOT
menterbalikkan keadaan, dengan berkesan memilih baris sahaja yang wujud pertindihan.
Pertanyaan Alternatif: Semakan Bertindih Terus
Sebagai alternatif, untuk memilih terus baris bertindih:
<code class="language-sql">SELECT * FROM periods WHERE range_start <= @check_period_end AND range_end >= @check_period_start;</code>
Pertanyaan ini secara langsung menyemak sama ada julat yang dipratentukan bermula sebelum atau sama dengan penghujung julat sasaran dan jika julat yang dipratakrifkan berakhir selepas atau sama dengan julat sasaran bermula. Pendekatan ini mungkin lebih mudah dibaca bagi sesetengah orang.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membandingkan Julat Tarikh dengan Cekap dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!