MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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の利用も検討するとよいでしょう。

  1. MySQLで特定の日付のレコード数をカウントする方法

    MySQLでは、COUNT(*)関数とWHERE句を組み合わせることで、特定の日付に該当するレコードの件数を簡単に取得できます。この記事では、サンプルテーブルを作成し、指定した日付のデータ件数をカウントする手順を順番に解説します。 1. サンプルテーブルの作成 まず、日付型(DATE)のカラムを持つテーブルを作成しましょう。 mysql> create table DemoTable1946     (     ShippingDate date     ); Quer

  2. MySQLで特定のセルの内容を更新する方法

    MySQLでは、UPDATE文とWHERE句を組み合わせることで、テーブル内の特定のセル(行の特定のカラム)の内容を簡単に更新できます。この記事では、実際のコード例を通じて、その手順をわかりやすく解説します。 1. サンプルテーブルを作成する まず、デモ用のテーブルを作成しましょう。 mysql> create table DemoTable2029     -> (     -> Id int,     -> FirstName varchar(2