Masa dan tarikh adalah keadaan pengumpulan biasa dan sering digunakan dalam pembangunan sebenar untuk memudahkan statistik data. Dalam MySQL, kita boleh menggunakan fungsi pemformatan tarikh untuk menukar tarikh kepada rentetan dalam format yang ditentukan, dan kemudian melaksanakan statistik kumpulan mengikut butiran masa yang diperlukan.
Sebelum kita bermula, kita perlu menyediakan jadual data ujian dan memasukkan beberapa data untuk memudahkan percubaan dan ujian seterusnya.
CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, `created_at` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; INSERT INTO `test` (`name`, `created_at`) VALUES ('test1', '2022-01-01 00:00:00'), ('test2', '2022-01-02 00:00:00'), ('test3', '2022-01-02 12:00:00'), ('test4', '2022-01-03 00:00:00'), ('test5', '2022-01-07 00:00:00'), ('test6', '2022-01-08 00:00:00'), ('test7', '2022-01-09 00:00:00'), ('test8', '2022-01-10 00:00:00'), ('test9', '2022-01-14 00:00:00'), ('test10', '2022-01-15 00:00:00'), ('test11', '2022-01-16 00:00:00'), ('test12', '2022-01-17 00:00:00'), ('test13', '2022-02-01 00:00:00'), ('test14', '2022-02-02 00:00:00'), ('test15', '2022-02-03 00:00:00'), ('test16', '2022-03-01 00:00:00'), ('test17', '2022-03-02 00:00:00'), ('test18', '2022-03-03 00:00:00'), ('test19', '2022-04-01 00:00:00'), ('test20', '2022-04-02 00:00:00'), ('test21', '2022-04-03 00:00:00'), ('test22', '2022-05-01 00:00:00'), ('test23', '2022-05-02 00:00:00'), ('test24', '2022-05-03 00:00:00');
Di sini kami mencipta jadual ujian bernama test
dengan tiga medan id
, name
dan created_at
. Di mana created_at
mewakili medan jenis datetime yang merekodkan masa penciptaan. Kami memasukkan beberapa data ujian, termasuk data dari Januari hingga Mei 2022.
Apabila kita perlu mengumpulkan statistik berdasarkan tarikh, MySQL menyediakan banyak Fungsi tarikh terbina dalam, seperti YEAR (), BULAN(), MINGGU(), HARI(), JAM(), dsb. Fungsi ini mengumpulkan data mengikut tarikh dan mengira kuantiti yang sepadan.
Untuk keperluan ini, kami ingin mengumpulkan mengikut tarikh dan mengira data untuk 7 hari, 4 minggu dan 3 bulan. Oleh itu, kita perlu menggunakan gabungan pemformatan tarikh dan fungsi tarikh.
Pertama, kita perlu memformat tarikh ke dalam format yang sepadan. Anda boleh melakukan ini menggunakan fungsi DATE_FORMAT(), yang mengambil dua parameter: tarikh dan rentetan format. Tarikh boleh diformatkan sebagai "yyyy-MM-dd" seperti yang ditunjukkan di bawah, contohnya:
SELECT DATE_FORMAT(date_column, '%Y-%m-%d') AS formatted_date FROM table_name;
Seterusnya, kita perlu Kumpulan tarikh dan mengira kuantiti. Ini boleh dicapai menggunakan klausa GROUP BY dan fungsi tarikh yang sepadan. Sebagai contoh, kita boleh mengira kuantiti harian yang dikumpulkan mengikut tarikh, seperti berikut:
SELECT DATE_FORMAT(date_column, '%Y-%m-%d') AS formatted_date, COUNT(*) AS count FROM table_name GROUP BY formatted_date;
SELECT DATE_FORMAT(date_column, '%x-%v') AS formatted_week, COUNT(*) AS count FROM table_name GROUP BY formatted_week;
atau
SELECT CONCAT(YEAR(date_column), '-', WEEK(date_column)) AS formatted_week, COUNT(*) AS count FROM table_name GROUP BY formatted_week;`
SELECT DATE_FORMAT(date_column, '%Y-%m-%d') AS formatted_month, COUNT(*) AS count FROM table_name GROUP BY formatted_month;
atau
SELECT CONCAT(YEAR(date_column), '-', MONTH(date_column)) AS formatted_month, COUNT(*) AS count FROM table_name GROUP BY formatted_month;
Atas ialah kandungan terperinci Apakah kaedah mengagregat statistik dalam format tarikh Mysql?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!