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

UPDATE文を使わずにMySQLのINSERT時に列の値を加算して設定する方法

MySQLでは、INSERTクエリを実行する際にDATE_ADD()関数を組み合わせることで、UPDATE文を使わずとも日付や時刻に対して分・時間・日・月・年を加算した値を直接挿入できます。本記事では、その具体的な手順をサンプルコードとともに解説します。

1. サンプルテーブルを作成する

まず、DATETIME型のカラムを持つテーブルを作成します。

mysql> create table DemoTable816(DueDate datetime);
Query OK, 0 rows affected (0.45 sec)

2. INSERT時にDATE_ADD()で日付を加算して挿入する

次に、INSERTコマンドを使ってレコードを挿入します。ポイントは、DATE_ADD()関数とINTERVAL句を組み合わせることで、挿入時点で指定した単位(分・時間・日・月・年)の日付計算を行えることです。

mysql> insert into DemoTable816 values(date_add(now(),interval 3 minute));
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable816 values(date_add('2018-01-21 00:00:00',interval 3 Hour));
Query OK, 1 row affected (0.52 sec)
mysql> insert into DemoTable816 values(date_add('2016-11-11 12:40:00',interval 3 Day));
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable816 values(date_add('2018-12-01 11:00:00',interval 3 Month));
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable816 values(date_add('2011-03-21 10:00:00',interval 3 Year));
Query OK, 1 row affected (0.16 sec)

上記の例では、以下のようにさまざまなパターンで日付を加算しています。

  • NOW():現在日時から3分後を挿入
  • HOUR:指定日時から3時間後を挿入
  • DAY:指定日時から3日後を挿入
  • MONTH:指定日時から3か月後を挿入
  • YEAR:指定日時から3年後を挿入

3. 挿入結果を確認する

SELECT文ですべてのレコードを表示して結果を確認します。

mysql> select *from DemoTable816;

実行すると、次のような出力が得られます。

+---------------------+
| DueDate             |
+---------------------+
| 2019-08-03 13:08:43 |
| 2018-01-21 03:00:00 |
| 2016-11-14 12:40:00 |
| 2019-03-01 11:00:00 |
| 2014-03-21 10:00:00 |
+---------------------+
5 rows in set (0.00 sec)

まとめ

このように、INSERT文の中でDATE_ADD()関数を使用すれば、一度データを挿入してからUPDATE文で修正するという二度手間を省けます。期限日(DueDate)のように「基準日から一定期間後」の日付を登録したいケースで特に便利なテクニックなので、ぜひ活用してみてください。

  1. MySQLで最初の3件のレコードに特定の値を設定する方法

    MySQLで、テーブルの最初の3件のレコードだけに特定の値を設定したい場合は、UPDATE文と組み合わせて LIMIT 3 を使用します。MySQLのUPDATE文は ORDER BY 句と LIMIT 句をサポートしているため、更新対象の行数を簡単に制御できます。ここでは、実際の手順をサンプルコードとともに解説します。 サンプルテーブルの作成 まず、テーブルを作成しましょう。 mysql> create table DemoTable1968     (     Id int NOT NULL AUTO_I

  2. MySQLのAUTO_INCREMENTとは?自動採番と初期値の設定方法をわかりやすく解説

    AUTO_INCREMENT属性の基本MySQLのAUTO_INCREMENT属性は、新しい行に対して一意の識別子(連番)を自動的に生成するために使用されます。カラムが「NOT NULL」として宣言されている場合、そのカラムにNULLを代入することで、連番のシーケンスを生成することが可能です。AUTO_INCREMENTカラムに任意の値を挿入すると、そのカラムは指定した値に設定され、同時にシーケンスもリセットされます。以降は、挿入された最大値を起点として、連続した値が自動的に生成されていきます。また、既存のAUTO_INCREMENTカラムを更新した場合も、AUTO_INCREMENTのシーケ