Rumah >pangkalan data >tutorial mysql >Mengapa Perbandingan Tarikh MySQL dengan date_format Menghasilkan Keputusan Yang Tidak Dijangka?
Membandingkan Tarikh MySQL dengan format_date
Walaupun mencuba beberapa kaedah perbandingan tarikh, pengguna menemui hasil yang tidak dijangka. Mereka cuba membandingkan tarikh yang diformatkan sebagai '%d-%m-%Y' tetapi memasukkan rekod yang salah dalam set keputusan.
Isu ini berpunca daripada membandingkan rentetan dan bukannya tarikh. Fungsi date_format menukar tarikh kepada rentetan, menjadikan perbandingan itu terdedah kepada susunan leksikografik. Sebagai contoh, '28-10-2012' adalah lebih besar mengikut abjad daripada '02-11-2012', justeru ia dimasukkan dalam set keputusan walaupun secara kronologi lebih awal.
Untuk menyelesaikan masalah ini, perbandingan harus dilakukan pada tarikh dan bukannya rentetan. Fungsi tarikh boleh digunakan untuk mengekstrak komponen tarikh daripada medan DATETIME atau DATE. Dengan membandingkan tarikh yang diekstrak, susunan kronologi dipastikan.
Contohnya:
<code class="mysql">select date_format(date(starttime),'%d-%m-%Y') from data where date(starttime) >= date '2012-11-02';</code>
Dalam pertanyaan ini, tarikh(masa mula) mengekstrak tarikh daripada medan masa mula, yang kemudiannya dibandingkan dengan tarikh yang ditentukan dalam format YYYY-MM-DD. Fungsi date_format digunakan hanya untuk memformatkan hasil.
Jika masa mula ialah medan DATETIME, pertimbangkan untuk menggunakan:
<code class="mysql">select date_format(date(starttime),'%d-%m-%Y') from data where starttime >= '2012-11-02 00:00:00';</code>
Pertanyaan ini mengelakkan penukaran tarikh berulang kerana perbandingan dilakukan terus pada Medan DATETIME.
Ingat, standard ISO-8601 mengesyorkan menggunakan 'YYYY-MM-DD' sebagai format tarikh, tetapi kod yang disediakan mematuhi format '%d-%m-%Y' yang ditentukan pengguna .
Atas ialah kandungan terperinci Mengapa Perbandingan Tarikh MySQL dengan date_format Menghasilkan Keputusan Yang Tidak Dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!