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
Barbara Streisandasal
2025-01-23 16:52:09513semak imbas

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):

<code class="language-sql">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';</code>

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

<code class="language-sql">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`);</code>

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

<code class="language-sql">DATE_FORMAT(`x`.`ts`, '%d.%m.%Y') AS `timestamp`</code>

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:
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