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

MySQLでDATETIME列を更新し、既存データに「10年3か月22日と10時間30分」を加算する方法

MySQLでは、INTERVALを使うことで、日時(DATETIME)型の列に任意の期間を加算できます。本記事では、既存の日時データに「10年・3か月・22日・10時間・30分」を一括して追加する方法を、具体的なサンプルコードとともに解説します。

1. テーブルの作成

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

mysql> create table DemoTable1509
    -> (
    -> ArrivalTime datetime
    -> );
Query OK, 0 rows affected (0.51 sec)

2. サンプルデータの挿入

INSERT文を使って、テスト用のレコードをいくつか登録します。

mysql> insert into DemoTable1509 values('2018-01-21 10:20:30');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1509 values('2019-04-01 11:00:00');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1509 values('2015-12-12 05:45:20');
Query OK, 1 row affected (0.15 sec)

3. データの確認

SELECT文ですべてのレコードを表示してみましょう。

mysql> select * from DemoTable1509;

実行結果は以下の通りです。

+---------------------+
| ArrivalTime         |
+---------------------+
| 2018-01-21 10:20:30 |
| 2019-04-01 11:00:00 |
| 2015-12-12 05:45:20 |
+---------------------+
3 rows in set (0.00 sec)

4. INTERVALを使った日時の加算(UPDATE)

ここが本題です。既存の日時データに「10年+3か月+22日+10時間+30分」を加算して更新するには、以下のようにUPDATE文とINTERVALを組み合わせます。複数のINTERVAL+演算子で連結できるのがポイントです。

mysql> update DemoTable1509
    -> set ArrivalTime=ArrivalTime+interval 10 year + interval 3 month +interval 22 day+interval 10 hour+interval 30 minute;
Query OK, 3 rows affected (0.17 sec)
Rows matched: 3  Changed: 3 Warnings: 0

5. 更新結果の確認

再度テーブルの中身を確認してみます。

mysql> select * from DemoTable1509;

すべてのレコードに指定した期間が正しく加算されていることがわかります。

+---------------------+
| ArrivalTime         |
+---------------------+
| 2028-05-13 20:50:30 |
| 2029-07-23 21:30:00 |
| 2026-04-03 16:15:20 |
+---------------------+
3 rows in set (0.00 sec)

補足:DATE_ADD関数との違い

上記の例では+演算子を使用しましたが、より可読性を高めたい場合はDATE_ADD()関数を使う方法もあります。

UPDATE DemoTable1509
SET ArrivalTime = DATE_ADD(ArrivalTime,
    INTERVAL '10-3-22 10:30:0'
    YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);

また、逆に期間を減算したい場合は- intervalDATE_SUB()関数を利用すればOKです。用途に応じて使い分けるとよいでしょう。

  1. MySQLのUPDATE文で「None」の値を「N/A」に一括置換する方法

    MySQLでは、UPDATE文とWHERE句を組み合わせることで、特定の条件に一致するレコードの値を簡単に置き換えることができます。この記事では、テーブル内の「None」という文字列を「N/A」に一括で更新する手順を、実際のSQLコード例とともに解説します。1. サンプルテーブルを作成するまず、動作確認用のテーブルを作成しましょう。以下のコマンドを実行します。mysql> create table DemoTable1903 ( FirstName varchar(20), LastName varchar(20) , Age int ); Que

  2. MySQLで45日後の日付を計算し、新しい列として表示するクエリの書き方

    MySQLで45日後の日付を新しい列に表示する方法 日付・時刻型の列に45日を加算し、その結果を元の列とは別の新しい列として表示したい場合は、date_add() 関数を使うのが最も簡単です。ここでは、テーブルの作成からデータの挿入、そして45日を加算するクエリの実行まで、手順を追って解説します。 1. テーブルを作成する まず、DATETIME型の列「DueTime」を持つテーブルを作成します。 mysql> create table DemoTable1930 ( DueTime datetime ); Query OK, 0 rows affected (