MySQL テーブルに日付範囲を効率的に設定するにはどうすればよいですか?
MySQL 日付範囲テーブルの入力メソッド
MySQL データベースを使用する場合、多くの場合、日付範囲を含むテーブルを生成してデータを設定する必要があります。このタスクを手動で実行すると、非常に面倒になります。この記事では効率的な自動化方法を紹介します。
2011 年 1 月 1 日から 2011 年 12 月 31 日までのすべての日付を含む「tablename」という名前の MySQL テーブルを作成する必要があるとします。テーブルには「_date」という DATE 型の列が 1 つだけあります。
MySQL ストアド プロシージャを使用して次のことを実現できます。
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');
ストアド プロシージャの仕組みは次のとおりです:
- dateStart と dateEnd という 2 つの入力パラメータを受け入れる「filldates」という名前のストアド プロシージャを作成します。
- ストアド プロシージャでは、WHILE ループを使用して日付範囲を反復処理します。
- 反復ごとに、現在の dateStart 値を使用して新しい行を tablename テーブルに挿入します。
- 各反復の後、date_add() 関数を使用して dateStart に 1 日を追加します。
- dateStart が dateEnd 以上になるまでこのプロセスを続けます。
- ストアド プロシージャを作成した後、CALL ステートメントを使用してそれを実行し、テーブルにデータを設定します。
重複した日付の挿入を避けるために、次の修正バージョンを使用できます:
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;
この変更により、重複した日付がテーブルに挿入されなくなります。
以上がMySQL テーブルに日付範囲を効率的に設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし)

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド

人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか?

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?
