ホームページ > データベース > mysql チュートリアル > MySQL テーブルに日付の範囲を効率的に設定するにはどうすればよいですか?

MySQL テーブルに日付の範囲を効率的に設定するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-21 03:02:10
オリジナル
842 人が閲覧しました

How to Efficiently Populate a MySQL Table with a Range of Dates?

MySQL 日付範囲クエリ: テーブルに日付範囲を入力します

MySQL テーブルに指定された日付範囲を手動で設定するのは時間がかかる場合があります。このプロセスを自動化するには、ストアド プロシージャを使用して複数の日付をテーブルに一度に挿入します。

解決策

次のストアド プロシージャ filldates は、開始日から終了日までの範囲の日付を tablename という名前のテーブルに設定します。

<code class="language-sql">DROP PROCEDURE IF EXISTS filldates;
DELIMITER |
CREATE PROCEDURE filldates(dateStart DATE, dateEnd DATE)
BEGIN
  WHILE dateStart <= dateEnd DO
    INSERT INTO tablename (datecolumn) VALUES (dateStart);
    SET dateStart = dateStart + INTERVAL 1 DAY;
  END WHILE;
END |
DELIMITER ;</code>
ログイン後にコピー

このプロシージャを使用するには、希望の開始日と終了日を指定して呼び出します:

<code class="language-sql">CALL filldates('2011-01-01','2011-12-31');</code>
ログイン後にコピー

これにより、2011 年 1 月 1 日から 12 月 31 日までのすべての日付が tablename テーブルに挿入されます。

既存の日付を確認する

このプロセスを拡張して、日付を挿入する前にテーブルに日付が既に存在するかどうかを確認できます。

<code class="language-sql">CREATE PROCEDURE filldates(dateStart DATE, dateEnd DATE)
BEGIN
  DECLARE adate DATE;
  WHILE dateStart <= dateEnd DO
    SELECT datecolumn INTO adate FROM tablename WHERE datecolumn = dateStart LIMIT 1;
    IF adate IS NULL THEN
      INSERT INTO tablename (datecolumn) VALUES (dateStart);
    END IF;
    SET dateStart = dateStart + INTERVAL 1 DAY;
  END WHILE;
END;</code>
ログイン後にコピー

これにより、テーブルに重複した日付が挿入されなくなります。

以上がMySQL テーブルに日付の範囲を効率的に設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート