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

MySQLのNOW()・CURDATE()関数とINTERVALキーワードの使い方を徹底解説

MySQLでは、日付や時刻の値に対してINTERVALキーワードを使用することで、簡単に加算・減算の計算を行うことができます。このINTERVALキーワードは、NOW()関数やCURDATE()関数とも組み合わせて使えます。日付値の日(day)、時(hour)、datetime単位などに対して使用する場合と、まったく同じ方法で利用できるのが特徴です。

NOW()関数とINTERVALキーワードを組み合わせる

NOW()は現在の日時を返す関数です。これにINTERVALを組み合わせると、現在日時から指定した期間を加算または減算した結果を取得できます。

現在日時に2日を加算する例

mysql> Select NOW() + INTERVAL 2 day;
+------------------------+
| NOW() + INTERVAL 2 day |
+------------------------+
| 2017-10-30 09:19:31    |
+------------------------+
1 row in set (0.00 sec)

現在日時から2日を減算する例

mysql> Select NOW() - INTERVAL 2 day;
+------------------------+
| NOW() - INTERVAL 2 day |
+------------------------+
| 2017-10-26 09:19:45    |
+------------------------+
1 row in set (0.00 sec)

現在日時から2時間を減算する例

INTERVALでは「day」だけでなく「hour」などの時間単位も指定できます。

mysql> Select NOW() - INTERVAL 2 hour;
+-------------------------+
| NOW() - INTERVAL 2 hour |
+-------------------------+
| 2017-10-28 07:19:51     |
+-------------------------+
1 row in set (0.00 sec)

CURDATE()関数とINTERVALキーワードを組み合わせる

CURDATE()は現在の日付のみを返す関数です。NOW()と同様に、INTERVALキーワードを使って日付の加算・減算が可能です。なお、CURDATE()は日付だけを扱うため、結果にも時刻は含まれません。

現在日付から2日を減算する例

mysql> Select CURDATE() - INTERVAL 2 day;
+----------------------------+
| CURDATE() - INTERVAL 2 day |
+----------------------------+
| 2017-10-26                 |
+----------------------------+
1 row in set (0.00 sec)

現在日付に2日を加算する例

mysql> Select CURDATE() + INTERVAL 2 day;
+----------------------------+
| CURDATE() + INTERVAL 2 day |
+----------------------------+
| 2017-10-30                 |
+----------------------------+
1 row in set (0.00 sec)

まとめ

INTERVALキーワードを使えば、NOW()CURDATE()の結果に対して、日数や時間などを柔軟に足し引きできます。「+」で加算、「-」で減算というシンプルな構文なので、期限日の計算やログの絞り込みなど、実務のさまざまな場面で活用できます。指定できる単位には「SECOND」「MINUTE」「HOUR」「DAY」「MONTH」「YEAR」など多数あり、目的に応じて使い分けると便利です。

  1. MySQLのNOW()・CURDATE()関数でUTCを使用する方法

    はじめにMySQLのNOW()やCURDATE()関数は、デフォルトではサーバーのシステムタイムゾーンに基づいた値を返します。これらの関数の結果を協定世界時(UTC)に統一したい場合は、設定ファイル「my.cnf」(Windows環境ではmy.iniの場合もあります)を編集するのが確実な方法です。手順1:データディレクトリの場所を確認するまず、次のクエリを実行して、設定ファイルが配置されているデータディレクトリの場所を確認しましょう。mysql> SELECT @@datadir;実行結果は以下のようになります。+-------------------------------------

  2. MySQLでCURDATE()とLIKE句を使った部分一致検索の方法

    MySQLにはCONTAINS()という名前の関数は存在しません。そのため、現在の日付(CURDATE())に関連する文字列で部分一致検索を行いたい場合は、CONCAT()関数とLIKE句を組み合わせる方法が有効です。本記事では、実際にサンプルテーブルを作成しながら、その手順を順番に解説していきます。現在の日付を確認するまず、CURDATE()関数を使って現在の日付を取得してみましょう。mysql> select curdate();実行結果は以下の通りです。+------------+ | curdate() | +------------+ | 2019-11-28 | +----