MySQLクエリで日付・時刻の値を秒単位で加算(インクリメント)する方法
MySQLで日付・時刻(DATETIME)の値に指定した秒数を加算したい場合は、DATE_ADD()関数とINTERVAL句を組み合わせて使用します。この記事では、実際にテーブルを作成し、秒単位で時刻をインクリメントする手順を具体例とともに解説します。
サンプルテーブルの作成
まず、DATETIME型のカラムを持つテーブルを作成しましょう。
mysql> create table DemoTable1867 ( ArrivalTime datetime ); Query OK, 0 rows affected (0.00 sec)
レコードの挿入
INSERT文を使って、テーブルにいくつかのレコードを挿入します。
mysql> insert into DemoTable1867 values('2019-10-12 12:34:45');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1867 values('2019-10-12 10:04:15');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1867 values('2019-10-12 11:00:23');
Query OK, 1 row affected (0.00 sec)
登録データの確認
SELECT文でテーブル内のすべてのレコードを表示してみます。
mysql> select * from DemoTable1867;
実行すると、以下のような出力が得られます。
+---------------------+ | ArrivalTime | +---------------------+ | 2019-10-12 12:34:45 | | 2019-10-12 10:04:15 | | 2019-10-12 11:00:23 | +---------------------+ 3 rows in set (0.00 sec)
秒単位で日付・時刻を加算するクエリ
ここからが本題です。DATE_ADD()関数にINTERVAL 5 SECONDを指定することで、各レコードの時刻を5秒ずつ進めることができます。
mysql> select date_add(ArrivalTime, interval 5 second) from DemoTable1867;
実行結果は以下のとおりです。すべての時刻が正確に5秒加算されていることが確認できます。
+------------------------------------------+ | date_add(ArrivalTime, interval 5 second) | +------------------------------------------+ | 2019-10-12 12:34:50 | | 2019-10-12 10:04:20 | | 2019-10-12 11:00:28 | +------------------------------------------+ 3 rows in set (0.00 sec)
補足:DATE_ADD()関数の活用ポイント
DATE_ADD(日付, INTERVAL 値 単位)という構文では、SECOND(秒)以外にも、MINUTE(分)、HOUR(時間)、DAY(日)、WEEK(週)、MONTH(月)、YEAR(年)など、さまざまな単位を柔軟に指定できます。逆に時刻を減算したい場合は、DATE_SUB()関数を使用するか、INTERVALに負の値を指定すればOKです。ログの時刻調整や有効期限の計算など、実務でも頻繁に使われる便利な関数なので、ぜひ覚えておきましょう。
-
MySQLのSET句で予約語「ADD」列の値をインクリメントする方法
はじめにMySQLでは「ADD」は予約語として登録されているため、列名に使用する際はバッククォート(`` `ADD` ``)で囲む必要があります。本記事では、実際にテーブルを作成し、「ADD」という名前の列の値をUPDATE文とSET句を使ってインクリメントする手順を解説します。サンプルテーブルの作成まず、以下のようにテーブルを作成します。mysql> create table DemoTable779 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, `ADD` int);Query OK, 0 rows affected (0.47
-
MySQLでNULL値のデータを抽出するSELECTクエリの使い方
MySQLでNULL値が格納されたレコードを取得するには、WHERE句で「IS NULL」を使用します。NULLは通常の値とは異なる特殊な状態を表すため、「= NULL」という等号による比較は正しく動作しない点に注意が必要です。 サンプルテーブルの作成 まず、以下のコマンドでテーブルを作成します。 mysql> create table DemoTable ( CustomerName varchar(100), CustomerCountryName varchar(100) ); Query OK, 0 rows affected (0.95 sec) テストデータの