Pengoptimuman Pertanyaan MySQL: Mengambil Rekod dalam Julat Masa
Dalam perbincangan sebelum ini, pengguna mendapatkan panduan untuk mendapatkan semula rekod yang ditambahkan pada pangkalan data dalam tempoh 30 hari yang lalu, dengan keperluan khusus untuk memaparkan tarikh dalam format mm/dd/yy. Pertanyaan asal yang diberikan menghadapi isu apabila ia gagal mengehadkan keputusan kepada jangka masa yang diingini.
Setelah diperiksa, didapati bahawa isu itu berpunca daripada peletakan fungsi DATE_FORMAT yang salah. Untuk mencapai penapisan yang dikehendaki, fungsi harus digunakan dalam klausa SELECT dan bukannya klausa WHERE. Berikut ialah pertanyaan yang diperbetulkan:
SELECT DATE_FORMAT(create_date, '%m/%d/%Y') FROM mytable WHERE create_date BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()
Selain itu, adalah penting untuk ambil perhatian bahawa CURDATE() hanya mengembalikan bahagian tarikh cap waktu. Jika lajur create_date mengandungi nilai DATETIME dengan komponen masa bukan sifar, pertanyaan asal akan mengecualikan rekod hari ini. Untuk menangani perkara ini, NOW() boleh digunakan sebaliknya:
SELECT DATE_FORMAT(create_date, '%m/%d/%Y') FROM mytable WHERE create_date BETWEEN NOW() - INTERVAL 30 DAY AND NOW()
Dengan pembetulan ini, pertanyaan akan mendapatkan semula rekod dengan betul yang memenuhi julat masa dan keperluan format yang ditentukan.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Rekod dengan Cekap dalam 30 Hari Terakhir dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!