Rumah >pangkalan data >tutorial mysql >Mengapa Pertanyaan SQLite Saya Mengembalikan Semua Tarikh Walaupun Menggunakan Klausa ANTARA?
Mengapa pertanyaan SQLite mengabaikan syarat julat tarikh?
Penerangan masalah:
Apabila menanyakan rekod dalam julat tarikh tertentu menggunakan pangkalan data SQLite, hasilnya mengandungi semua tarikh, malah tarikh di luar julat yang ditentukan. Pernyataan pertanyaan yang digunakan adalah seperti berikut:
<code class="language-sql">SELECT * FROM test WHERE date BETWEEN "11/1/2011" AND "11/8/2011";</code>
Punca masalah:
Masalahnya ialah format tarikh. SQLite memerlukan tarikh dalam format YYYY-MM-DD (contohnya, "2011-11-01" hingga "2011-11-08"). Walau bagaimanapun, format tarikh yang disediakan dalam pertanyaan ialah "MM/DD/YYYY".
Apabila melaksanakan pertanyaan, SQLite mentafsir rentetan tarikh sebagai teks dan bukannya tarikh. Oleh itu, ia mengabaikan syarat tarikh dan mendapatkan semula semua baris dalam jadual "ujian" tanpa mengira nilai tarikh sebenar.
Penyelesaian:
Untuk menyelesaikan isu ini, tukar rentetan tarikh kepada format YYYY-MM-DD:
<code class="language-sql">SELECT * FROM test WHERE date BETWEEN "2011-11-01" AND "2011-11-08";</code>
Dengan menggunakan format tarikh yang betul, SQLite boleh menilai keadaan dengan betul dan mengehadkan keputusan kepada rekod dalam julat tarikh yang ditentukan.
Atas ialah kandungan terperinci Mengapa Pertanyaan SQLite Saya Mengembalikan Semua Tarikh Walaupun Menggunakan Klausa ANTARA?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!