Soalan:
Apabila membandingkan tarikh menggunakan fungsi DATE_FORMAT, a pengguna menemui hasil yang tidak dijangka, dengan rekod sebelum tarikh perbandingan muncul dalam keputusan. Bagaimanakah isu ini boleh diselesaikan?
Analisis:
Masalah berpunca daripada membandingkan tarikh sebagai rentetan dan bukannya nilai tarikh sebenar mereka. DATE_FORMAT menukar tarikh kepada rentetan, yang kemudiannya dibandingkan secara leksikografik, membawa kepada keputusan yang salah.
Penyelesaian:
Untuk membandingkan tarikh dengan tepat, pertanyaan harus membandingkan nilai tarikh secara langsung, menggunakan fungsi DATE() untuk mengekstrak maklumat tarikh sahaja. Pertanyaan yang diubah suai berikut menyelesaikannya:
<code class="sql">select date_format(date(starttime),'%d-%m-%Y') from data where date(starttime) >= date '2012-11-02';</code>
Dalam pertanyaan ini:
Dengan membandingkan tarikh secara langsung, pertanyaan menapis rekod dengan berkesan pada tarikh tersebut. sebelum '2012-11-02'.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Keputusan Perbandingan Tarikh yang Salah Menggunakan DATE_FORMAT dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!