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);
また、逆に期間を減算したい場合は- intervalやDATE_SUB()関数を利用すればOKです。用途に応じて使い分けるとよいでしょう。
-
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
-
MySQLで45日後の日付を計算し、新しい列として表示するクエリの書き方
MySQLで45日後の日付を新しい列に表示する方法 日付・時刻型の列に45日を加算し、その結果を元の列とは別の新しい列として表示したい場合は、date_add() 関数を使うのが最も簡単です。ここでは、テーブルの作成からデータの挿入、そして45日を加算するクエリの実行まで、手順を追って解説します。 1. テーブルを作成する まず、DATETIME型の列「DueTime」を持つテーブルを作成します。 mysql> create table DemoTable1930 ( DueTime datetime ); Query OK, 0 rows affected (