MySQL ストアドで連続した日付データを作成する

MySQL ストアドで連続した日付データを作成する

MySQLで、ストアドで連続した日付データを作成する手順を記述してます。

環境

  • OS ubuntu21.10
  • MySQL Ver 8.0.27-0ubuntu0.21.10.1 for Linux on x86_64 ((Ubuntu))
  • MySQL Workbench 8.0.27

手順

まずは、テスト用のテーブルを作成します。

CREATE TABLE `sample` (
  `id` INT AUTO_INCREMENT,
  `name`  VARCHAR(255) NOT NULL,
  `created_at` DATETIME NOT NULL,
  PRIMARY KEY (`id`, `created_at`) 
);

次に、日付を1日ごとに加算していく以下のストアドプロシージャ「loop_sample」を作成します。

drop procedure if exists loop_sample;
delimiter //

CREATE PROCEDURE `loop_sample`(in i int)
begin
  declare cnt int default 0;
  while cnt < i do    
    insert into sample (name,created_at) values(concat('data',cnt),DATE_ADD('2020-01-01',INTERVAL cnt DAY));
    set cnt = cnt + 1;
  end while;
end

//

ストアドプロシージャができれば、後は、引数に作成したいデータの個数を入れれば完了です。

ここでは10000件作成します。

call loop_sample(10000)

日付が1日ごとに加算されたデータが作成されていることが確認できます。