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 サイトの他の関連記事を参照してください。