Apabila memindahkan data daripada SQL Server ke MySQL, adalah penting untuk menapis data yang berkaitan sahaja. Dalam kes ini, mengekstrak data tujuh hari terakhir adalah penting. Walau bagaimanapun, pertanyaan SQL yang diberikan membuahkan hasil yang tidak dijangka.
Pertanyaan, yang menggunakan GETDATE()-7 DAN GETDATE() untuk menapis data, diambil hanya bernilai lima hari hasil. Percanggahan ini memerlukan penerokaan.
Untuk SQL Server, GETDATE() mengembalikan tarikh dan masa semasa. Walau bagaimanapun, pengiraan tujuh hari yang lalu memerlukan pelarasan untuk mengambil kira zon waktu dan masa penjimatan siang. Untuk menyelesaikan masalah ini, DATEADD(hari,-7, GETDATE()) digunakan. DATEADD() menambah bilangan hari yang ditentukan (dalam kes ini, -7) pada tarikh semasa, memastikan pengambilan data yang tepat sehingga tujuh hari lengkap terakhir.
Oleh itu, pertanyaan yang diperbetulkan hendaklah:
<code class="sql">SELECT id, NewsHeadline as news_headline, NewsText as news_text, state CreatedDate as created_on FROM News WHERE CreatedDate >= DATEADD(day,-7, GETDATE())</code>
Pertanyaan yang diubah suai ini akan menangkap data bernilai tujuh hari yang dikehendaki dengan berkesan dan menyelesaikan percanggahan yang dialami sebelum ini.
Atas ialah kandungan terperinci Mengapa saya hanya mendapat data dari lima hari yang lalu apabila pertanyaan saya secara khusus meminta tujuh yang terakhir?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!