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
Lepaskan: 2025-01-23 16:56:09
asal
734 orang telah melayarinya

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

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

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

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!

sumber:php.cn
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