Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengisi Tarikh Hilang dalam Julat Tarikh MySQL?

Bagaimana untuk Mengisi Tarikh Hilang dalam Julat Tarikh MySQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-23 16:56:09735semak imbas

How to Fill Missing Dates in MySQL Date Ranges?

Isi tarikh yang tiada dalam julat tarikh dalam MySQL

Dalam MySQL, pengendalian tarikh yang hilang memerlukan penentuan tarikh yang diperlukan dan mengisi jurang dengan nilai yang sesuai. Nasib baik, terdapat penyelesaian, dan ia melibatkan penggunaan helah jadual NUMBERS untuk menjana senarai tarikh menaik.

Mula-mula, buat jadual NUMBERS yang mengandungi lajur id kenaikan automatik:

<code class="language-sql">CREATE TABLE numbers (
  id int(10) unsigned NOT NULL auto_increment,
   PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;</code>

Gunakan pernyataan INSERT untuk mengisi jadual dengan bilangan nilai yang diperlukan.

Seterusnya, gunakan DATE_ADD untuk menjana senarai tarikh berdasarkan nilai id:

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

Ganti "2010-06-06" dan "2010-06-14" masing-masing dengan tarikh mula dan tamat anda sendiri.

Akhir sekali, lakukan LEFT JOIN berdasarkan bahagian masa dan jadual data:

<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), '%Y-%m-%d') AS `ts`
             FROM `numbers` `n`
            WHERE DATE_ADD('2010-06-06', INTERVAL `n`.`id` - 1 DAY) <= '2010-06-14') x
LEFT JOIN `y` ON STR_TO_DATE(`y`.`date`, '%d.%m.%Y') = STR_TO_DATE(`x`.`ts`, '%Y-%m-%d')</code>

Dalam pertanyaan ini, tarikh yang hilang akan diisi dengan 0. Untuk mengekalkan format tarikh asal, gunakan DATE_FORMAT(x.ts, '%d.%m.%Y') AS timestamp. Ambil perhatian bahawa jadual y telah diubah suai di sini untuk memastikan format tarikh konsisten dan fungsi STR_TO_DATE digunakan untuk penukaran. Ini lebih dipercayai daripada kaedah dalam artikel asal.

Atas ialah kandungan terperinci Bagaimana untuk Mengisi Tarikh Hilang dalam Julat Tarikh MySQL?. 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