Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengenalpasti Julat Tarikh Bertindih dalam MySQL?
Mengenal pasti Julat Tarikh Bertindih dalam MySQL
Masalah:
Mari kita pertimbangkan jadual yang menyimpan sesi acara dengan tarikh mula dan tamat masing-masing. Kami menyasarkan untuk memastikan tiada konflik antara sesi. Khususnya, kami ingin mencari sesi bertindih apabila cuba memasukkan sesi baharu dalam julat tarikh tertentu.
Pertanyaan:
Untuk mengenal pasti kemungkinan konflik, kami boleh menggunakan pertanyaan berikut:
SELECT * FROM session WHERE "2010-01-05" BETWEEN start_date AND end_date OR "2010-01-25" BETWEEN start_date AND end_date OR "2010-01-05" >= start_date AND "2010-01-25" <= end_date;
Memahami Pertanyaan:
Pertanyaan ini menyemak tiga syarat yang menunjukkan kemungkinan pertindihan:
Pendekatan Alternatif:
Pertanyaan alternatif yang menjamin hasil yang tepat:
SELECT * FROM session WHERE new_start < existing_end AND new_end > existing_start;
Penjelasan:
Pertanyaan ini menggunakan penilaian logik berdasarkan empat pembolehubah:
Pertanyaan mengembalikan sesi bertindih jika tarikh mula sesi baharu adalah sebelum tarikh tamat mana-mana sesi sedia ada, DAN tarikh tamat sesi baharu adalah selepas tarikh mula mana-mana sesi sedia ada.
Atas ialah kandungan terperinci Bagaimana untuk Mengenalpasti Julat Tarikh Bertindih dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!