Apabila bekerja dengan data tarikh dan masa dalam MySQL, adalah perkara biasa untuk perlu memilih data yang termasuk dalam julat tarikh tertentu . Walau bagaimanapun, apabila menggunakan lajur create_at sebagai nilai datetime, tafsiran lalai ialah tengah malam untuk tarikh pendek.
Masalah:
Anda mungkin menghadapi situasi di mana pertanyaan seperti yang berikut tidak mengembalikan baris, walaupun baris create_at timestamp jatuh dalam tarikh yang ditentukan julat:
SELECT `users`.* FROM `users` WHERE created_at >= '2011-12-01' AND created_at <= '2011-12-06'
Penyelesaian:
Isunya ialah pertanyaan sebenarnya memilih data dengan julat dari '2011-12-01 00:00:00 ' hingga '2011-12-06 00:00:00'. Untuk membetulkannya, terdapat beberapa pendekatan:
SELECT `users`.* FROM `users` WHERE created_at >= '2011-12-01' AND created_at <= '2011-12-07'
SELECT `users`.* FROM `users` WHERE created_at >= '2011-12-01' AND created_at <= DATE_ADD('2011-12-01', INTERVAL 7 DAY)
SELECT `users`.* FROM `users` WHERE created_at BETWEEN('2011-12-01', DATE_ADD('2011-12-01', INTERVAL 7 DAY))
Menggunakan mana-mana pendekatan ini akan memilih data dengan betul yang termasuk dalam yang ditentukan julat tarikh, termasuk baris dengan cap masa create_at seperti '2011-12-06 10:45:36'.
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!