ホームページ >データベース >mysql チュートリアル >MySQL テーブルに日付範囲を効率的に設定するにはどうすればよいですか?
MySQL 日付範囲テーブルの入力メソッド
MySQL データベースを使用する場合、多くの場合、日付範囲を含むテーブルを生成してデータを設定する必要があります。このタスクを手動で実行すると、非常に面倒になります。この記事では効率的な自動化方法を紹介します。
2011 年 1 月 1 日から 2011 年 12 月 31 日までのすべての日付を含む「tablename」という名前の MySQL テーブルを作成する必要があるとします。テーブルには「_date」という DATE 型の列が 1 つだけあります。
MySQL ストアド プロシージャを使用して次のことを実現できます。
<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 (_date) VALUES (dateStart); SET dateStart = date_add(dateStart, INTERVAL 1 DAY); END WHILE; END | DELIMITER ; CALL filldates('2011-01-01', '2011-12-31');</code>
ストアド プロシージャの仕組みは次のとおりです:
重複した日付の挿入を避けるために、次の修正バージョンを使用できます:
<code class="language-sql">CREATE PROCEDURE filldates(dateStart DATE, dateEnd DATE) BEGIN WHILE dateStart <= dateEnd DO IF NOT EXISTS (SELECT 1 FROM tablename WHERE _date = dateStart) THEN INSERT INTO tablename (_date) VALUES (dateStart); END IF; SET dateStart = date_add(dateStart, INTERVAL 1 DAY); END WHILE; END;</code>
この変更により、重複した日付がテーブルに挿入されなくなります。
以上がMySQL テーブルに日付範囲を効率的に設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。