Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengenalpasti Julat Tarikh Bertindih dalam MySQL?

Bagaimana untuk Mengenalpasti Julat Tarikh Bertindih dalam MySQL?

Mary-Kate Olsen
Lepaskan: 2024-12-19 13:12:10
asal
181 orang telah melayarinya

How to Identify Overlapping Date Ranges in 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:

1

2

3

4

5

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

Memahami Pertanyaan:

Pertanyaan ini menyemak tiga syarat yang menunjukkan kemungkinan pertindihan:

  1. Jika tarikh mula yang dicadangkan ("2010-01-05") berada dalam sesi sedia ada julat tarikh (ANTARA tarikh_mula DAN tarikh_akhir).
  2. Jika tarikh tamat yang dicadangkan ("2010-01-25") termasuk dalam julat tarikh sesi sedia ada (ANTARA tarikh_mula DAN tarikh_akhir).
  3. Jika julat tarikh yang dicadangkan (dari "2010-01-05" hingga "2010-01-25 ") bertindih sepenuhnya dengan julat tarikh sesi sedia ada (>= tarikh_mula DAN <= tarikh_akhir).

Pendekatan Alternatif:

Pertanyaan alternatif yang menjamin hasil yang tepat:

1

2

3

4

SELECT *

FROM session

WHERE new_start < existing_end

      AND new_end   > existing_start;

Salin selepas log masuk

Penjelasan:

Pertanyaan ini menggunakan penilaian logik berdasarkan empat pembolehubah:

  • new_start: Tarikh mula sesi yang dicadangkan ("2010-01-05").
  • new_end: Tarikh tamat sesi yang dicadangkan ("2010-01 -25").
  • existing_start: Tarikh mula sedia ada sesi.
  • existing_end: Tarikh tamat sesi sedia ada.

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!

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