Perbandingan Tarikh dengan MySQL DATE_FORMAT
Apabila membandingkan tarikh menggunakan fungsi DATE_FORMAT MySQL, adalah penting untuk memahami bahawa format yang anda pilih mempengaruhi hasil perbandingan .
Dalam contoh yang diberikan, jadual mengandungi tarikh yang diformatkan sebagai '%d-%m-%Y' dan pertanyaan cuba membandingkannya menggunakan format yang sama. Walau bagaimanapun, ini membawa kepada hasil yang salah kerana "28-10-2012" secara leksikografik lebih besar daripada "02-11-2012".
Untuk menyelesaikan masalah ini, adalah disyorkan untuk membandingkan tarikh sebagai tarikh dan bukannya rentetan. Pertanyaan yang betul hendaklah:
<code class="mysql">select date_format(date(starttime),'%d-%m-%Y') from data where date(starttime) >= date '2012-11-02';</code>
Di sini, fungsi date() mengekstrak komponen tarikh daripada medan masa mula, manakala tarikh '2012-11-02' menentukan tarikh perbandingan dalam nilai tahun-bulan bentuk. Ini memastikan perbandingan dilakukan dengan betul sebagai tarikh.
Jika masa mula ialah medan DATETIME, pertimbangkan untuk menggunakan pertanyaan berikut untuk mengelakkan penukaran berulang:
<code class="mysql">select date_format(date(starttime),'%d-%m-%Y') from data where starttime >= '2012-11-02 00:00:00';</code>
Secara amnya, anda dinasihatkan untuk menggunakan standard ISO-8601 untuk pemformatan tarikh, seperti y-M-d. Walau bagaimanapun, pertanyaan di atas menunjukkan cara melakukan perbandingan tarikh menggunakan format yang disediakan.
Atas ialah kandungan terperinci Apabila Membandingkan Tarikh dengan DATE_FORMAT MySQL, Mengapakah Menggunakan Format Yang Sama Penting?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!