Bekerja dengan INTERVAL dan CURDATE dalam MySQL untuk Memudahkan Pertanyaan Berasaskan Masa
Apabila berurusan dengan data berasaskan masa dalam MySQL, ia selalunya diperlukan untuk bekerja dengan julat tarikh atau selang masa tertentu. Fungsi INTERVAL dan CURDATE menawarkan cara yang berkesan untuk memudahkan dan menyesuaikan pertanyaan anda.
Sebagai contoh, jika anda perlu mendapatkan semula data untuk julat masa tertentu, anda boleh menggunakan sintaks berikut:
<code class="sql">WHERE v.date > DATE_SUB(CURDATE(), INTERVAL num MONTH) AND v.date < CURDATE()
Ganti "num" dengan bilangan bulan yang anda mahu kembali ke masa lalu. Ini akan melaraskan pertanyaan anda secara dinamik untuk mendapatkan semula data bagi bulan yang ditentukan sambil mengelakkan keperluan untuk menulis berbilang pertanyaan untuk setiap bulan.
Dalam contoh yang diberikan, anda ingin mendapatkan semula data untuk setiap bulan. Untuk melakukan ini, anda boleh menggunakan gelung untuk berulang sepanjang bulan:
<code class="sql">FOR i IN REVERSE (1..12) LOOP SELECT s.GSP_nom, DATE_ADD(CURDATE(), INTERVAL - MONTH(i)) AS month, AVG((v.vote + v.prix) / 2) AS avg FROM votes_serveur v JOIN serveur s ON v.idServ = s.idServ WHERE v.date > DATE_ADD(CURDATE(), INTERVAL - MONTH(i)) AND v.date < DATE_ADD(CURDATE(), INTERVAL - MONTH(i-1)) GROUP BY s.GSP_nom ORDER BY avg DESC; END LOOP;</code>
Gelung ini akan menjana pertanyaan untuk setiap 12 bulan sebelumnya, memberikan anda data yang dikehendaki dalam satu pelaksanaan. Dengan menggunakan INTERVAL dan CURDATE, anda boleh menyelaraskan pertanyaan berasaskan masa yang kompleks anda, mengurangkan keperluan untuk kod berulang dan meningkatkan kecekapan operasi pangkalan data anda.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menyelaraskan pertanyaan berasaskan masa dalam MySQL menggunakan INTERVAL dan CURDATE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!