MySQL での日付シリーズの生成
データベース プログラミングでは、多くの場合、一連の日付を入力したテーブルを作成する必要があります。 これは、毎日のデータの追跡やカレンダーベースのシステムの作成など、さまざまなアプリケーションに役立ちます。
日付入力用の MySQL ストアド プロシージャ
次の MySQL ストアド プロシージャは、テーブルに日付範囲を効率的に設定します。
<code class="language-sql">DROP PROCEDURE IF EXISTS populate_date_range; DELIMITER // CREATE PROCEDURE populate_date_range(IN start_date DATE, IN end_date DATE) BEGIN DECLARE current_date DATE; SET current_date = start_date; WHILE current_date <= end_date DO INSERT INTO tablename (date_column) VALUES (current_date); SET current_date = DATE_ADD(current_date, INTERVAL 1 DAY); END WHILE; END // DELIMITER ;</code>
このプロシージャ populate_date_range
は、開始日と終了日を入力として受け取ります。 date_column
に達するまで、各日付を tablename
テーブルの end_date
に繰り返し挿入します。
既存データの処理
日付の重複入力を避ける必要がある場合は、挿入前に既存の日付をチェックするように手順を変更できます。
<code class="language-sql">DROP PROCEDURE IF EXISTS populate_date_range_no_duplicates; DELIMITER // CREATE PROCEDURE populate_date_range_no_duplicates(IN start_date DATE, IN end_date DATE) BEGIN DECLARE current_date DATE; SET current_date = start_date; WHILE current_date <= end_date DO IF NOT EXISTS (SELECT 1 FROM tablename WHERE date_column = current_date) THEN INSERT INTO tablename (date_column) VALUES (current_date); END IF; SET current_date = DATE_ADD(current_date, INTERVAL 1 DAY); END WHILE; END // DELIMITER ;</code>
この改訂された手順 populate_date_range_no_duplicates
には、重複する日付の挿入を防ぐための NOT EXISTS
を使用したチェックが含まれています。 tablename
と date_column
を実際のテーブル名と列名に置き換えてください。
以上がMySQL テーブルに日付範囲を設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。