Rumah > Artikel > pangkalan data > Bagaimana untuk memilih data dengan betul antara dua tarikh dalam MySQL?
Memilih Data daripada Pangkalan Data MySQL Antara Dua Tarikh
Dalam MySQL, mendapatkan semula data dalam julat tarikh tertentu memberikan cabaran biasa apabila menyimpan tarikh sebagai nilai datetime. Menggunakan >= dan <= pengendali mungkin tidak selalu menghasilkan hasil yang diingini kerana tafsiran lalai tengah malam sebagai permulaan tarikh.
Pertimbangkan senario di mana anda ingin memilih rekod di mana lajur create_at jatuh. antara '2011-12-01' dan '2011-12-06.' Menjalankan pertanyaan berikut secara mengejutkan akan mengecualikan rekod yang dijangkakan yang berlaku pada '2011-12-06 10:45:36':
SELECT `users`.* FROM `users` WHERE created_at >= '2011-12-01' AND created_at <= '2011-12-06'
Sebabnya ialah MySQL mentafsir tarikh tamat sebagai tengah malam ('2011- 12-06 00:00:00'), dengan berkesan tidak termasuk rekod yang dibuat lewat hari itu. Untuk memilih rekod yang dimaksudkan, ubah suai tarikh tamat kepada '2011-12-07':
SELECT `users`.* FROM `users` WHERE created_at >= '2011-12-01' AND created_at <= '2011-12-07'
Sebagai alternatif, gunakan DATE_ADD() untuk menambah hari pada tarikh mula, mencipta selang yang termasuk akhir yang diingini tarikh:
SELECT `users`.* FROM `users` WHERE created_at >= '2011-12-01' AND created_at <= DATE_ADD('2011-12-01', INTERVAL 7 DAY)</p> <p>Untuk kebolehbacaan yang lebih baik, operator BETWEEN boleh digunakan:</p> <pre class="brush:php;toolbar:false">SELECT `users`.* FROM `users` WHERE created_at BETWEEN('2011-12-01', DATE_ADD('2011-12-01', INTERVAL 7 DAY))
Dengan melaraskan tarikh tamat atau menggunakan fungsi DATE_ADD(), anda boleh memilih data dengan tepat daripada julat tarikh yang ditentukan, memastikan semua rekod yang dibuat pada tarikh tamat yang dimaksudkan ditangkap.
Atas ialah kandungan terperinci Bagaimana untuk memilih data dengan betul antara dua tarikh dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!