MySQLで現在の日付(CURDATE())に一致する特定の日付のレコードを更新する方法
MySQLでは、CURDATE()関数を使うことで、現在の日付に一致するレコードだけを抽出し、UPDATE文で効率的に値を変更できます。本記事では、実際のサンプルを通じてその手順をわかりやすく解説します。
1. サンプルテーブルの作成
まず、デモ用のテーブルを作成します。ここでは「金額(Amount)」と「期日(DueDate)」を持つシンプルなテーブルを用意しました。
mysql> create table DemoTable1822 ( Amount int, DueDate date ); Query OK, 0 rows affected (0.00 sec)
2. テストデータの挿入
次に、INSERTコマンドを使ってテーブルに複数のレコードを挿入します。あえて現在の日付と一致するデータを含めておくのがポイントです。
mysql> insert into DemoTable1822 values(1000,'2019-10-11'); Query OK, 1 row affected (0.00 sec) mysql> insert into DemoTable1822 values(500,'2019-11-30'); Query OK, 1 row affected (0.00 sec) mysql> insert into DemoTable1822 values(700,'2018-11-30'); Query OK, 1 row affected (0.00 sec)
3. 挿入したレコードの確認
SELECT文を実行して、テーブル内のすべてのレコードを表示します。
mysql> select * from DemoTable1822;
実行結果は以下の通りです。
+--------+------------+ | Amount | DueDate | +--------+------------+ | 1000 | 2019-10-11 | | 500 | 2019-11-30 | | 700 | 2018-11-30 | +--------+------------+ 3 rows in set (0.00 sec)
4. 現在の日付に一致するレコードをUPDATEする
いよいよ本題です。WHERE句にDueDate=curdate()を指定することで、「期日が今日であるレコード」のみを対象に更新処理を行えます。
mysql> update DemoTable1822 set Amount=5000 where DueDate=curdate(); Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0
この例では、システム日付が「2019-11-30」だったため、該当する1件のレコードの金額が5000に更新されました。
5. 更新結果の確認
最後に、再度SELECT文を実行して、テーブルの内容が正しく更新されているか確認しましょう。
mysql> select * from DemoTable1822;
実行結果は以下の通りです。「2019-11-30」のレコードのAmountだけが5000に変わっていることがわかります。
+--------+------------+ | Amount | DueDate | +--------+------------+ | 1000 | 2019-10-11 | | 5000 | 2019-11-30 | | 700 | 2018-11-30 | +--------+------------+ 3 rows in set (0.00 sec)
まとめ
CURDATE()は現在の日付を「YYYY-MM-DD」形式で返す関数です。これをUPDATE文のWHERE句で比較条件として使えば、毎日自動的に期限切れデータを更新するバッチ処理などにも応用できます。なお、日時まで含めて判定したい場合はNOW()やCURRENT_TIMESTAMPの利用も検討するとよいでしょう。
-
MySQLで特定の日付のレコード数をカウントする方法
MySQLでは、COUNT(*)関数とWHERE句を組み合わせることで、特定の日付に該当するレコードの件数を簡単に取得できます。この記事では、サンプルテーブルを作成し、指定した日付のデータ件数をカウントする手順を順番に解説します。 1. サンプルテーブルの作成 まず、日付型(DATE)のカラムを持つテーブルを作成しましょう。 mysql> create table DemoTable1946 ( ShippingDate date ); Quer
-
MySQLで特定のセルの内容を更新する方法
MySQLでは、UPDATE文とWHERE句を組み合わせることで、テーブル内の特定のセル(行の特定のカラム)の内容を簡単に更新できます。この記事では、実際のコード例を通じて、その手順をわかりやすく解説します。 1. サンプルテーブルを作成する まず、デモ用のテーブルを作成しましょう。 mysql> create table DemoTable2029 -> ( -> Id int, -> FirstName varchar(2