Rumah >pangkalan data >tutorial mysql >Bagaimana untuk membandingkan tarikh dengan cekap dalam MySQL tanpa komponen masa?
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>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>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)
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!