Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengisi Tarikh Hilang dalam Set Data MySQL Menggunakan Jadual Nombor?

Bagaimana untuk Mengisi Tarikh Hilang dalam Set Data MySQL Menggunakan Jadual Nombor?

Barbara Streisand
Lepaskan: 2025-01-23 16:52:09
asal
581 orang telah melayarinya

How to Fill Missing Dates in a MySQL Dataset Using a Numbers Table?

MySQL: Isikan tarikh yang tiada dalam julat tarikh

Dalam bidang pengurusan data, adalah perkara biasa untuk menemui set data yang mengandungi tarikh yang hilang. Untuk menyelesaikan masalah ini, MySQL menyediakan penyelesaian untuk mengisi tarikh yang hilang ini, memastikan urutan tarikh yang berterusan.

Kunci untuk mengisi tarikh yang hilang dalam MySQL adalah dengan menggunakan helah jadual nombor. Kaedah ini melibatkan penciptaan jadual yang dipanggil "nombor" yang mengandungi lajur integer yang meningkat secara automatik, secara berkesan senarai nombor yang bertambah.

Seterusnya, isikan jadual "nombor" dengan baris yang mencukupi. Ini memastikan julat bilangan peningkatan yang mencukupi untuk meliputi julat tarikh yang diingini.

Untuk membina senarai tarikh, gunakan fungsi DATE_ADD. Khususnya, dalam pertanyaan berikut, gantikan "2010-06-06" dan "2010-06-14" dengan tarikh mula dan tamat anda sendiri (pastikan anda menggunakan format YYYY-MM-DD):

SELECT DATE_ADD('2010-06-06', INTERVAL `n`.`id` - 1 DAY)
FROM `numbers` `n`
WHERE DATE_ADD('2010-06-06', INTERVAL `n`.`id` -1 DAY) < '2010-06-14';
Salin selepas log masuk

Gunakan hasil pertanyaan ini sebagai jadual perantaraan untuk melaksanakan LEFT JOIN pada jadual data asal berdasarkan bahagian masa:

SELECT `x`.`ts` AS `timestamp`,
       COALESCE(`y`.`score`, 0) AS `cnt`
FROM (SELECT DATE_FORMAT(DATE_ADD('2010-06-06', INTERVAL `n`.`id` - 1 DAY), '%m/%d/%Y') AS `ts`
      FROM `numbers` `n`
      WHERE DATE_ADD('2010-06-06', INTERVAL `n`.`id` - 1 DAY) < '2010-06-14') `x`
LEFT JOIN `your_table` `y` ON DATE(`y`.`date_column`) = DATE(`x`.`ts`);
Salin selepas log masuk

Untuk mengekalkan format tarikh, bungkus medan ts di atas dalam fungsi DATE_FORMAT:

DATE_FORMAT(`x`.`ts`, '%d.%m.%Y') AS `timestamp`
Salin selepas log masuk

Dengan mengikuti langkah-langkah ini, anda boleh mengisi tarikh yang tiada dalam set data MySQL anda dengan cekap, memastikan perwakilan lancar julat tarikh yang diperlukan.

Atas ialah kandungan terperinci Bagaimana untuk Mengisi Tarikh Hilang dalam Set Data MySQL Menggunakan Jadual Nombor?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan