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

Bagaimana untuk memeriksa julat tarikh yang bertindih dengan cekap dalam MySQL?

Susan Sarandon
Lepaskan: 2024-12-11 20:40:12
asal
341 orang telah melayarinya

How to Efficiently Check for Overlapping Date Ranges in MySQL?

Menyemak Julat Tarikh Bertindih dalam MySQL: Penyelesaian Dioptimumkan

Dalam senario ini, kami mempunyai jadual yang dipanggil 'sesi' yang menyimpan acara dengan tarikh mula dan tamat. Apabila memasukkan acara baharu, adalah penting untuk mengelakkan konflik dengan sesi sedia ada.

Pendekatan biasa melibatkan penggunaan perbandingan tarikh untuk mengenal pasti pertindihan:

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

Walau bagaimanapun, kaedah ini tidak selalu berkesan untuk menyemak set data yang besar. Penyelesaian yang dioptimumkan boleh dicapai menggunakan formula berikut:

WHERE new_start < existing_end
      AND new_end   > existing_start;
Salin selepas log masuk

Formula ini secara berkesan membandingkan tarikh mula dan tamat acara baharu (new_start dan new_end) dengan tarikh mula dan tamat acara sedia ada (existing_start dan sedia ada_akhir). Jika syarat ini benar, pertindihan wujud.

Untuk menggambarkan pendekatan ini, pertimbangkan jadual berikut:

id start_date end_date
1 2010-01-01 2010-01-10
2 2010-01-20 2010-01-30

Mari kita semak pertindihan dengan acara baharu dari 2010-01-05 hingga 2010-01-25:

ns ne es ee Overlap
2010-01-05 2010-01-25 2010-01-01 2010-01-10 Yes
2010-01-05 2010-01-25 2010-01-20 2010-01-30 Yes

Seperti yang anda lihat, acara baharu bertindih dengan kedua-dua sesi sedia ada. Pendekatan ini menyediakan cara yang cekap dan tepat untuk menyemak julat tarikh bertindih dalam MySQL, memastikan konflik dikesan dan diselesaikan dengan berkesan.

Atas ialah kandungan terperinci Bagaimana untuk memeriksa julat tarikh yang 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