Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengisi Tarikh Hilang dalam Julat Tarikh MySQL?
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!