MySQLで日付・時刻を加算するには?DATE_ADD関数とINTERVAL演算子の使い方
MySQLで日付に時間を加算する方法
MySQLで現在時刻などに一定の時間を加算したい場合は、DATE_ADD()関数を使用します。SQL Serverなどで使われる「DATEADD」という名前の関数はMySQLには存在しないため、注意が必要です。
DATE_ADD()関数の基本構文
DATE_ADD()関数の基本的な構文は以下の通りです。
DATE_ADD(NOW(), INTERVAL 加算する値 MINUTE);
第1引数に対象の日付(ここではNOW()で現在日時)、第2引数にINTERVALキーワードを使って加算する値と単位を指定します。単位はMINUTE以外にも、SECOND、HOUR、DAY、MONTH、YEARなど様々なものが利用可能です。
算術演算子を使った方法
実は、DATE_ADD()関数を使わなくても、+演算子とINTERVALを組み合わせることで同じ結果が得られます。こちらの方が記述がシンプルで、多くの場面で好まれています。
NOW() + INTERVAL 30 MINUTE
DATE_ADD()関数の実行例
それでは、実際にDATE_ADD()関数を使って現在時刻に30分を加算してみましょう。
クエリ:
mysql> select date_add(now(), interval 30 minute);
実行結果:
+-------------------------------------+ | date_add(now(), interval 30 minute) | +-------------------------------------+ | 2019-02-27 15:38:27 | +-------------------------------------+ 1 row in set (0.00 sec)
このように、実行した時点の現在日時に30分が加算された値が返されます。
+演算子を使った実行例
次に、DATE_ADD()関数の代わりに+演算子を使ってみます。まず、比較用として現在時刻を確認します。
クエリ:
mysql> select now(); +---------------------+ | now() | +---------------------+ | 2019-02-27 15:09:18 | +---------------------+ 1 row in set (0.00 sec)
このNOW()に30分を加算します。
クエリ:
mysql> select now()+interval 30 minute;
実行結果:
+--------------------------+ | now()+interval 30 minute | +--------------------------+ | 2019-02-27 15:39:33 | +--------------------------+ 1 row in set (0.00 sec)
15時09分18秒から30分後の15時39分33秒が正しく表示されました。
まとめ
- MySQLでは「DATEADD」ではなくDATE_ADD()関数を使用する
- NOW() + INTERVAL 30 MINUTEのように、+演算子でも同様の計算が可能
- 単位はMINUTEのほか、DAYやHOURなども指定できる
どちらの方法でも結果は同じなので、可読性やチームのコーディング規約に合わせて使い分けるとよいでしょう。
-
MySQLで行を削除する方法|DELETE文の基本と実行例を解説
MySQLでテーブルから特定の行(レコード)を削除するには、DELETE文を使用します。この記事では、実際にサンプルテーブルを作成し、DELETE文を使って行を削除する手順を順番に解説します。1. サンプルテーブルの作成まず、CREATE TABLE文を使ってサンプル用のテーブルを作成します。mysql> create table DemoTable -> ( -> CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> CustomerName varchar(100), -> Cus
-
MySQLクエリの入力方法|基本ルールから複数行クエリまで解説
MySQLクエリの入力方法コンソールでクエリを入力する前に、まずサーバーに正しく接続できているかを確認することが重要です。以下のクエリを実行すると、使用中のサーバーのバージョン番号と現在の日付が表示されます。mysql> SELECT VERSION(), CURRENT_DATE;ポイント:関数「VERSION()」や「CURRENT_DATE」は大文字・小文字を区別しません。つまり、「version()」「Version()」「vERsion()」など、いずれも同じ意味として処理されます。「CURRENT_DATE」についても同様です。MySQLクエリ実行時の基本ルールSQLクエリの