Rumah > pangkalan data > tutorial mysql > Bagaimana untuk membandingkan tarikh dengan cekap dalam MySQL tanpa komponen masa?

Bagaimana untuk membandingkan tarikh dengan cekap dalam MySQL tanpa komponen masa?

Linda Hamilton
Lepaskan: 2025-01-24 15:46:14
asal
159 orang telah melayarinya

How to Efficiently Compare Dates in MySQL Without Time Components?

perbandingan tarikh mysql yang cekap: Mengabaikan komponen masa

Selalunya, pertanyaan pangkalan data memerlukan membandingkan tarikh tanpa mempertimbangkan komponen masa. MySQL menawarkan beberapa fungsi untuk mencapai matlamat ini dengan cekap.

senario:

katakan anda mempunyai jadual

dengan lajur players jenis us_reg_date. Matlamatnya adalah untuk memilih semua pemain yang mendaftarkan antara dua tarikh tertentu, memberi tumpuan semata -mata pada tarikh dan mengabaikan masa. DATETIME

Pendekatan yang tidak cekap (dan mengapa ia gagal):

Percubaan awal mungkin melibatkan menggunakan

untuk mengekstrak bahagian tarikh: CONVERT

<code class="language-sql">SELECT * FROM `players` WHERE CONVERT(CHAR(10),us_reg_date,120) >= '2000-07-05' AND CONVERT(CHAR(10),us_reg_date,120) <= '2011-11-10';</code>
Salin selepas log masuk
Pendekatan ini tidak cekap dan terdedah kepada kesilapan. Fungsi

mengubah jenis data, menghalang penggunaan indeks yang cekap. Tambahan pula, perbandingan rentetan langsung tarikh boleh menyebabkan hasil yang tidak dijangka. CONVERT

Penyelesaian yang berkesan:

kaedah yang lebih cekap dan tepat memanfaatkan fungsi tarikh terbina dalam MySQL:

<code class="language-sql">SELECT * FROM players
WHERE us_reg_date >= '2000-07-05' AND us_reg_date < DATE_ADD('2011-11-11', INTERVAL 0 DAY);</code>
Salin selepas log masuk
Pertanyaan ini secara langsung membandingkan nilai

. Bahagian penting menggunakan DATETIME. Ini bijak memilih semua tarikh sehingga, tetapi tidak termasuk, tengah malam '2011-11-11', dengan berkesan merangkumi keseluruhan '2011-11-10'. Pendekatan ini mengekalkan kebolehgunaan indeks untuk prestasi pertanyaan optimum. Sebagai alternatif, < DATE_ADD('2011-11-11', INTERVAL 0 DAY) boleh digunakan untuk niat yang lebih jelas tetapi mungkin sedikit kurang cekap daripada perbandingan langsung. DATE(us_reg_date)

Kaedah halus ini memastikan perbandingan tarikh yang tepat hanya semasa mengekalkan prestasi pangkalan data.

Atas ialah kandungan terperinci Bagaimana untuk membandingkan tarikh dengan cekap dalam MySQL tanpa komponen masa?. 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