Mengambil Rekod dari Hari Tertentu dalam MySQL Tidak Termasuk Masa
Apabila bekerja dengan data temporal yang disimpan sebagai tarikh, ia menjadi perlu untuk mendapatkan semula rekod berdasarkan hari tertentu tanpa mengira masa. Senario ini kerap timbul dalam aplikasi yang menjejaki metrik harian atau menganalisis peristiwa dalam tempoh 24 jam tertentu.
Untuk mencapai matlamat ini, adalah penting untuk mengelak daripada menggunakan pemilih seperti DATE(datecolumns) = '2012-12- 24', kerana ia boleh memberi kesan ketara kepada prestasi dan menghalang penggunaan indeks.
Sebaliknya, ia adalah disyorkan untuk menggunakan pertanyaan berasaskan julat menggunakan operator BETWEEN. Sebagai contoh, pertanyaan berikut mendapatkan semula rekod daripada jadual yang ditentukan untuk 25 Disember 2012:
SELECT * FROM tablename WHERE columname BETWEEN '2012-12-25 00:00:00' AND '2012-12-25 23:59:59'
Pendekatan ini membolehkan penggunaan indeks dan memastikan prestasi pertanyaan yang optimum.
Baru-baru ini, ia telah mendapati bahawa menggunakan '23:59:59' sebagai penghujung hari mungkin tidak boleh dipercayai dalam versi MySQL tertentu. Untuk menangani perkara ini, adalah dinasihatkan untuk mengemas kini pertanyaan kepada yang berikut:
SELECT * FROM tablename WHERE columname >= '2012-12-25 00:00:00' AND columname < '2012-12-26 00:00:00'
Walaupun sintaks tertentu mungkin berbeza sedikit bergantung pada versi MySQL, prinsip mengecualikan perbandingan berasaskan masa dan menggunakan pemilih julat kekal penting untuk prestasi pertanyaan yang cekap.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Rekod MySQL dengan Cekap untuk Hari Tertentu, Mengabaikan Masa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!