MySQLで別のDATETIMEフィールドに日時を挿入・更新する方法
MySQLでは、UPDATE文とDATE_ADD()関数を組み合わせることで、既存のDATETIMEフィールドに別の日時を挿入(更新)することができます。本記事では、実際にテーブルを作成しながら、その手順をわかりやすく解説します。
1. テーブルの作成
まず、動作確認用のテーブルを作成しましょう。以下のクエリを実行して、「Id」「IssueDate(発行日)」「DueDate(期限日)」の3つのカラムを持つテーブルを定義します。
mysql> create table AddDateTimeWithOther
-> (
-> Id int,
-> IssueDate datetime,
-> DueDate datetime
-> );
Query OK, 0 rows affected (0.69 sec)
2. テストデータの挿入
次に、INSERT文を使ってレコードを挿入します。ここではNOW()関数で現在日時を取得し、DATE_ADD()関数を使って基準日から3年前および2年後の日時をDueDateに設定しています。
mysql> insert into AddDateTimeWithOther values(100,now(),date_add(now(),interval -3 year));
Query OK, 1 row affected (0.13 sec)
mysql> insert into AddDateTimeWithOther values(101,now(),date_add(now(),interval 2 year));
Query OK, 1 row affected (0.20 sec)
ポイント: DATE_ADD()関数は「interval -3 year」のように負の値を指定することで、過去の日時を計算することもできます。
3. 挿入したデータの確認
SELECT文ですべてのレコードを表示し、データが正しく登録されているかを確認します。
mysql> select *from AddDateTimeWithOther;
実行結果は以下の通りです。
+------+---------------------+---------------------+
| Id | IssueDate | DueDate |
+------+---------------------+---------------------+
| 100 | 2018-12-11 17:33:28 | 2015-12-11 17:33:28 |
| 101 | 2018-12-11 17:33:37 | 2020-12-11 17:33:37 |
+------+---------------------+---------------------+
2 rows in set (0.00 sec)
4. UPDATE文で別の日時に更新する
それでは、Id=100のレコードに対して、DueDateの値「2015-12-11 17:33:28」を別の日時に変更してみましょう。UPDATE文とWHERE句を組み合わせて、特定のレコードだけを対象に更新できます。
以下のクエリでは、現在日時から1年後の日時を計算し、DueDateを「2019-12-11 17:35:03」に更新しています。
mysql> update AddDateTimeWithOther set DueDate = date_add(now(),interval 1 year) where Id = 100;
Query OK, 1 row affected (0.24 sec)
Rows matched: 1 Changed: 1 Warnings: 0
「Rows matched: 1 Changed: 1」と表示されていれば、1件のレコードが正常に更新されたことを意味します。
5. 更新結果の確認
最後に、再度SELECT文を実行して、更新が正しく反映されているかを確認しましょう。
mysql> select *from AddDateTimeWithOther;
実行結果は以下の通りです。Id=100のDueDateが新しい日時に更新されていることがわかります。
+------+---------------------+---------------------+
| Id | IssueDate | DueDate |
+------+---------------------+---------------------+
| 100 | 2018-12-11 17:33:28 | 2019-12-11 17:35:03 |
| 101 | 2018-12-11 17:33:37 | 2020-12-11 17:33:37 |
+------+---------------------+---------------------+
2 rows in set (0.00 sec)
まとめ
MySQLでDATETIMEフィールドに別の日時を挿入するには、UPDATE文とDATE_ADD()関数を活用します。NOW()関数を基準にすれば常に実行時点からの相対的な日時を設定でき、WHERE句で対象レコードを絞り込むことで安全に更新できます。期限日の自動計算など、実務でも頻繁に使われるテクニックなので、ぜひ覚えておきましょう。
-
MySQLテーブルにJSONデータを挿入する方法
MySQLでは、JSON型のカラムを作成することで、構造化されたデータをそのまま保存できます。ここでは、JSON型カラムを持つテーブルを作成し、実際にデータを挿入・取得する手順を解説します。 1. JSON型カラムを持つテーブルを作成する まず、JSON型のカラム「ListOfNames」を持つテーブルを作成します。 mysql> create table DemoTable1832 ( ListOfNames JSON ); Query OK,
-
MySQLのINSERT INTO SELECT文で別のテーブルの値を挿入する方法
あるテーブルの値を基に別のテーブルへデータを挿入したい場合は、INSERT INTO SELECT文を使用します。この構文では、SELECT文で抽出した結果セットをそのまま対象テーブルへ流し込めるため、テーブル間のデータ移行やコピーにもっとも効率的な方法の一つです。 以下の手順で、実際の動作を順番に確認していきましょう。 手順1:元となるテーブルを作成する まず、データのコピー元となるテーブル「demo82」を作成します。 mysql> create table demo82 -> (