Pemformatan Tarikh yang Salah Menyebabkan Masalah dalam Pertanyaan Julat Tarikh SQLite
Masalah yang kerap berlaku apabila menanyakan pangkalan data SQLite untuk data dalam julat tarikh tertentu ialah pertanyaan mengembalikan semua tarikh, mengabaikan julat yang ditentukan. Ini selalunya berpunca daripada salah tanggapan tentang format tarikh SQLite.
SQLite memerlukan tarikh dalam format YYYY-MM-DD. Pertanyaan menggunakan format lain, seperti "11/1/2011" dan "11/8/2011", dianggap sebagai rentetan teks, bukan tarikh.
Ini membawa kepada pertanyaan seperti ini berkelakuan di luar jangkaan:
<code class="language-sql">SELECT * FROM test WHERE date BETWEEN '11/1/2011' AND '11/8/2011'</code>
Oleh kerana SQLite menganggap '11/1/2011' dan '11/8/2011' sebagai rentetan, operator BETWEEN
membandingkannya secara leksikografik (sebagai teks). Pertanyaan akan mengembalikan mana-mana baris di mana lajur date
mengandungi rentetan ini, tanpa mengira tarikh sebenar.
Penyelesaian adalah untuk memastikan semua tarikh dalam pangkalan data dan pertanyaan anda mematuhi format YYYY-MM-DD dengan ketat. Ini membolehkan SQLite mentafsir tarikh dengan betul dan mengembalikan hasil yang tepat untuk julat tarikh anda.
Atas ialah kandungan terperinci Mengapa Pertanyaan Julat Tarikh SQLite Saya Mengembalikan Keputusan Tidak Dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!