MySQL INTERVALキーワードで使用できる単位値の種類と使い方を徹底解説
MySQLでは、日付や時刻に対して加算・減算を行う際にINTERVALキーワードを使用できます。INTERVALキーワードには、マイクロ秒から年まで、さまざまな単位値を指定することが可能です。この記事では、それぞれの単位の使い方を実行例とともに詳しく解説します。
MICROSECOND(マイクロ秒)
この単位は、現在の時刻またはユーザーが指定した時刻に対して、指定したマイクロ秒数を加算・減算するために使用します。
mysql> Select NOW()+INTERVAL 100 MICROSECOND +--------------------------------+ | NOW()+INTERVAL 100 MICROSECOND | +--------------------------------+ | 2017-10-28 18:47:25.000100 | +--------------------------------+ 1 row in set (0.00 sec)
上記のクエリでは、MySQLのINTERVALキーワードを使って、現在の日時に100マイクロ秒を加算しています。次に、任意の日時を指定した例を見てみましょう。
mysql> Select '2017-02-25 05:04:30' + INTERVAL 100 Microsecond; +--------------------------------------------------+ | '2017-02-25 05:04:30' + INTERVAL 100 Microsecond | +--------------------------------------------------+ | 2017-02-25 05:04:30.000100 | +--------------------------------------------------+ 1 row in set (0.00 sec)
上記のクエリでは、指定した日時に100マイクロ秒が加算されます。
SECOND(秒)
この単位は、現在の時刻またはユーザーが指定した時刻に対して、指定した秒数を加算・減算するために使用します。
mysql> Select NOW()+INTERVAL 59 SECOND; +--------------------------+ | NOW()+INTERVAL 59 SECOND | +--------------------------+ | 2017-10-28 18:49:30 | +--------------------------+ 1 row in set (0.00 sec)
上記のクエリでは、現在の日時に59秒を加算しています。
mysql> Select '2017-02-25 05:04:30' + INTERVAL 59 Second; +--------------------------------------------+ | '2017-02-25 05:04:30' + INTERVAL 59 Second | +--------------------------------------------+ | 2017-02-25 05:05:29 | +--------------------------------------------+ 1 row in set (0.00 sec)
上記のクエリでは、指定した日時に59秒が加算されます。
MINUTE(分)
この単位は、現在の時刻またはユーザーが指定した時刻に対して、指定した分数を加算・減算するために使用します。
mysql> Select NOW()+INTERVAL 10 MINUTE; +--------------------------+ | NOW()+INTERVAL 10 MINUTE | +--------------------------+ | 2017-10-28 18:58:44 | +--------------------------+ 1 row in set (0.00 sec)
上記のクエリでは、現在の日時に10分を加算しています。
mysql> Select '2017-02-25 05:04:30' + INTERVAL 10 Minute; +--------------------------------------------+ | '2017-02-25 05:04:30' + INTERVAL 10 Minute | +--------------------------------------------+ | 2017-02-25 05:14:30 | +--------------------------------------------+ 1 row in set (0.00 sec)
上記のクエリでは、指定した日時に10分が加算されます。
HOUR(時間)
この単位は、現在の時刻またはユーザーが指定した時刻に対して、指定した時間数を加算・減算するために使用します。
mysql> Select NOW()+INTERVAL 2 HOUR; +-----------------------+ | NOW()+INTERVAL 2 HOUR | +-----------------------+ | 2017-10-28 20:55:44 | +-----------------------+ 1 row in set (0.00 sec)
上記のクエリでは、現在の日時に2時間を加算しています。
mysql> Select '2017-02-25 05:04:30' + INTERVAL 1 Hour; +-----------------------------------------+ | '2017-02-25 05:04:30' + INTERVAL 1 Hour | +-----------------------------------------+ | 2017-02-25 06:04:30 | +-----------------------------------------+ 1 row in set (0.00 sec)
上記のクエリでは、指定した日時に1時間が加算されます。
DAY(日)
この単位は、現在の日付またはユーザーが指定した日付に対して、指定した日数を加算・減算するために使用します。
mysql> Select NOW()+INTERVAL 10 DAY; +-----------------------+ | NOW()+INTERVAL 10 DAY | +-----------------------+ | 2017-11-07 18:48:53 | +-----------------------+ 1 row in set (0.00 sec)
上記のクエリでは、現在の日時に10日を加算しています。
mysql> Select '2017-02-25 05:04:30' + INTERVAL 10 Day; +-----------------------------------------+ | '2017-02-25 05:04:30' + INTERVAL 10 Day | +-----------------------------------------+ | 2017-03-07 05:04:30 | +-----------------------------------------+ 1 row in set (0.00 sec)
上記のクエリでは、指定した日時に10日が加算され、月も自動的に繰り上がります。
WEEK(週)
この単位は、現在の日付またはユーザーが指定した日付に対して、指定した週数を加算・減算するために使用します。
mysql> Select NOW()+INTERVAL 1 WEEK; +-----------------------+ | NOW()+INTERVAL 1 WEEK | +-----------------------+ | 2017-11-04 18:49:10 | +-----------------------+ 1 row in set (0.00 sec)
上記のクエリでは、現在の日時に1週間(7日間)を加算しています。
mysql> Select '2017-02-25 05:04:30' + INTERVAL 1 Week; +-----------------------------------------+ | '2017-02-25 05:04:30' + INTERVAL 1 Week | +-----------------------------------------+ | 2017-03-04 05:04:30 | +-----------------------------------------+ 1 row in set (0.00 sec)
上記のクエリでは、指定した日時に1週間(7日間)が加算されます。
MONTH(月)
この単位は、現在の日付またはユーザーが指定した日付に対して、指定した月数を加算・減算するために使用します。
mysql> Select NOW()+INTERVAL 1 MONTH; +------------------------+ | NOW()+INTERVAL 1 MONTH | +------------------------+ | 2017-11-28 18:49:31 | +------------------------+ 1 row in set (0.00 sec)
上記のクエリでは、現在の日時に1ヶ月を加算しています。
mysql> Select '2017-02-25 05:04:30' + INTERVAL 1 Month; +------------------------------------------+ | '2017-02-25 05:04:30' + INTERVAL 1 Month | +------------------------------------------+ | 2017-03-25 05:04:30 | +------------------------------------------+ 1 row in set (0.00 sec)
上記のクエリでは、指定した日時に1ヶ月が加算されます。
QUARTER(四半期)
この単位は、現在の日付またはユーザーが指定した日付に対して、指定した四半期数(1四半期=3ヶ月)を加算・減算するために使用します。
mysql> Select NOW()+INTERVAL 1 QUARTER; +--------------------------+ | NOW()+INTERVAL 1 QUARTER | +--------------------------+ | 2018-01-28 18:49:41 | +--------------------------+ 1 row in set (0.00 sec)
上記のクエリでは、現在の日時に1四半期(3ヶ月間)を加算しています。
mysql> Select '2017-02-25 05:04:30' + INTERVAL 2 Quarter; +--------------------------------------------+ | '2017-02-25 05:04:30' + INTERVAL 2 Quarter | +--------------------------------------------+ | 2017-08-25 05:04:30 | +--------------------------------------------+ 1 row in set (0.00 sec)
上記のクエリでは、指定した日時に2四半期(6ヶ月間)が加算されます。
YEAR(年)
この単位は、現在の日付またはユーザーが指定した日付に対して、指定した年数を加算・減算するために使用します。
mysql> Select NOW()+INTERVAL 1 YEAR; +-----------------------+ | NOW()+INTERVAL 1 YEAR | +-----------------------+ | 2018-10-28 18:49:48 | +-----------------------+ 1 row in set (0.00 sec)
上記のクエリでは、現在の日時に1年を加算しています。
mysql> Select '2017-02-25 05:04:30' + INTERVAL 2 Year; +-----------------------------------------+ | '2017-02-25 05:04:30' + INTERVAL 2 Year | +-----------------------------------------+ | 2019-02-25 05:04:30 | +-----------------------------------------+ 1 row in set (0.00 sec)
上記のクエリでは、指定した日時に2年が加算されます。
まとめ
MySQLのINTERVALキーワードを使用すると、MICROSECONDからYEARまで幅広い単位で日付・時刻の演算を簡単に行うことができます。加算する場合は「+」、減算する場合は「-」を使うだけで直感的に記述できるため、期限日の計算やレポート期間の集計など、実務でも非常に役立ちます。ぜひ実際の開発で活用してみてください。
-
MySQL 8.0の新機能まとめ:追加された7つの主要機能を解説
本記事では、MySQL 8.0で新たに追加された主要機能についてわかりやすく解説します。セキュリティ、パフォーマンス、文字セットなど多方面にわたる改善点を確認していきましょう。セキュリティレベルの強化MySQL 8.0ではセキュリティレベルが大幅に改善され、DBA(データベース管理者)はアカウント管理においてより柔軟な運用が可能になりました。これにより、きめ細かな権限設定や安全なユーザー管理が実現しています。リソースグループリソースグループの作成と管理が可能になり、サーバー内で動作するスレッドを特定のグループのリソースに割り当てられるようになりました。グループの属性を使用することで、リソースの
-
MySQL 8.0で削除された主なオプションと変数の一覧
MySQL 8.0で削除されたオプションと変数についてMySQL 8.0では、パフォーマンス向上と機能の整理に伴い、多くの廃止予定だったオプションやシステム変数が削除されました。特に大きな変更点として、長年非推奨とされてきたクエリキャッシュ機能の完全な削除が挙げられます。ここでは、MySQL 8.0で削除された代表的なオプションと変数を、削除されたバージョンとあわせて紹介します。クエリキャッシュ関連の変数(8.0.3で削除)Qcache_free_blocks: クエリキャッシュ内の空きメモリブロック数を示すステータス変数です。Qcache_free_memory: クエリキャッシュに割り当て