Apakah kaedah mengagregat statistik dalam format tarikh Mysql?

WBOY
Lepaskan: 2023-05-31 23:04:48
ke hadapan
1138 orang telah melayarinya

    Pengenalan

    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.

    Persediaan

    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');
    Salin selepas log masuk

    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.

    Prinsip Pelaksanaan

    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;
    Salin selepas log masuk

    Operasi sebenar

    Statistik mengikut hari

    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;
    Salin selepas log masuk

    Mengira mengikut minggu

    SELECT DATE_FORMAT(date_column, '%x-%v') AS formatted_week, COUNT(*) AS count FROM table_name GROUP BY formatted_week;
    Salin selepas log masuk

    atau

    SELECT CONCAT(YEAR(date_column), '-', WEEK(date_column)) AS formatted_week, COUNT(*) AS count FROM table_name GROUP BY formatted_week;`
    Salin selepas log masuk

    Mengira mengikut bulan

    SELECT DATE_FORMAT(date_column, '%Y-%m-%d') AS formatted_month, COUNT(*) AS count FROM table_name GROUP BY formatted_month;
    Salin selepas log masuk

    atau

    SELECT CONCAT(YEAR(date_column), '-', MONTH(date_column)) AS formatted_month, COUNT(*) AS count FROM table_name GROUP BY formatted_month;
    Salin selepas log masuk

    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!

    Label berkaitan:
    sumber:yisu.com
    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan