Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengisi Jadual MySQL dengan Julat Tarikh menggunakan Prosedur Tersimpan?
Menjana Jadual Julat Tarikh MySQL dengan Prosedur Tersimpan
Selalunya, anda memerlukan jadual yang diisi dengan jujukan tarikh dalam julat tertentu, contohnya, dari 2011-01-01 hingga 2011-12-31. Prosedur tersimpan menawarkan penyelesaian yang cekap.
Prosedur tersimpan berikut, filldates
, menggunakan gelung WHILE
untuk lelaran melalui julat tarikh dan memasukkan setiap tarikh ke dalam lajur _date
jadual anda:
<code class="language-sql">DROP PROCEDURE IF EXISTS filldates; DELIMITER | CREATE PROCEDURE filldates(dateStart DATE, dateEnd DATE) BEGIN DECLARE adate DATE; SET adate = dateStart; WHILE adate <= dateEnd DO INSERT INTO your_table (_date) VALUES (adate); SET adate = adate + INTERVAL 1 DAY; END WHILE; END | DELIMITER ;</code>
Untuk mengisi jadual anda, laksanakan prosedur filldates
, menyediakan tarikh mula dan tamat:
<code class="language-sql">CALL filldates('2011-01-01','2011-12-31');</code>
Kaedah ini cepat mencipta jadual yang mengandungi semua tarikh dalam julat yang ditentukan.
Untuk mengelakkan penyertaan pendua, ubah suai prosedur untuk menyemak tarikh sedia ada sebelum memasukkan:
<code class="language-sql">CREATE PROCEDURE filldates(dateStart DATE, dateEnd DATE) BEGIN DECLARE adate DATE; SET adate = dateStart; WHILE adate <= dateEnd DO IF NOT EXISTS (SELECT 1 FROM your_table WHERE _date = adate) THEN INSERT INTO your_table (_date) VALUES (adate); END IF; SET adate = adate + INTERVAL 1 DAY; END WHILE; END;</code>
Prosedur yang disemak ini memastikan keunikan data. Ingat untuk menggantikan your_table
dengan nama sebenar jadual anda.
Atas ialah kandungan terperinci Bagaimana untuk Mengisi Jadual MySQL dengan Julat Tarikh menggunakan Prosedur Tersimpan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!