MySQLのタイムゾーン設定方法!現在時刻の確認から変更手順まで解説
MySQLを運用していると、サーバーのタイムゾーンが意図したものと異なり、日時データにずれが生じることがあります。本記事では、MySQLで現在時刻を確認する方法と、タイムゾーンを設定・変更する具体的な手順をわかりやすく解説します。
現在の時刻を確認する方法
MySQLで現在の日時を知りたい場合は、SELECT文と組み合わせてnow()関数を使用します。クエリは以下の通りです。
mysql> SELECT now();
上記のクエリを実行すると、現在の日時が取得できます。実行結果は次のようになります。
+---------------------+ | now() | +---------------------+ | 2018-10-06 12:57:25 | +---------------------+ 1 row in set (0.02 sec)
この結果から、現在のサーバー時刻が「2018年10月6日 12時57分25秒」であることが確認できます。
タイムゾーンを設定する方法
タイムゾーンを変更するには、SETコマンドを使用します。基本的な構文は以下の通りです。
mysql> SET time_zone = "Some value";
セッション単位での設定例
実際に上記の構文を使って、タイムゾーンを設定してみましょう。以下のクエリでは、UTCから+9時間50分のオフセットを指定しています。
mysql> SET time_zone = "+9:50"; Query OK, 0 rows affected (0.00 sec)
この設定は現在のセッションにのみ適用されるため、接続を切断すると元の設定に戻ります。特定の処理だけ一時的にタイムゾーンを変えたい場合に便利です。
グローバル(全体)への設定例
すべての接続に対してタイムゾーンを適用したい場合は、SETコマンドにGLOBALキーワードを付けてグローバル設定を行います。
mysql> set global time_zone="+9:00"; Query OK, 0 rows affected (0.00 sec)
日本時間(JST)に合わせたい場合は、オフセットとして「+9:00」を指定するのが一般的です。
まとめ
- 現在時刻の確認: SELECT now(); を実行する
- セッション単位の設定: SET time_zone = "オフセット値";
- サーバー全体への設定: SET GLOBAL time_zone = "オフセット値";
なお、グローバル設定はMySQLサーバーの再起動後も維持したい場合、my.cnf(my.ini)の設定ファイルに「default-time-zone」を記述しておくことをおすすめします。また、タイムゾーン名(例:'Asia/Tokyo')を使用する場合は、あらかじめタイムゾーンテーブルがロードされている必要がある点にも注意しましょう。
-
MySQLでクエリの実行結果を変数に代入する方法をわかりやすく解説
MySQLでクエリ結果を変数に代入する基本MySQLでは、@変数名 の形式でユーザー定義変数を使用することで、クエリの実行結果を変数に格納できます。代入には :=(代入演算子)を使い、SELECT文の中で直接値を取得するのが一般的な方法です。この記事では、実際にテーブルを作成し、クエリ結果を変数に代入するまでの一連の手順をサンプルコード付きで紹介します。1. サンプルテーブルを作成するまず、以下のようにCREATE TABLE文でテーブルを作成します。mysql> create table DemoTable1864 ( Id int, FirstName var
-
MySQLでスロークエリログを設定する方法|遅いクエリの原因を特定する手順
本番環境のMySQLサーバーを運用・管理していると、データベースの動作が突然遅くなることがあります。原因となっているクエリを特定するのは容易ではなく、かなりの時間を要する作業になりがちです。そんなときに役立つのが、MySQLに標準搭載されている「スロークエリログ」機能です。 スロークエリログとは スロークエリログとは、指定した実行時間を超えたクエリを自動的に記録する機能です。このログを有効にしておけば、データベースサーバーの動作が通常より遅いと感じたときに、ログファイルをテキストエディタで開くだけで、どのクエリがボトルネックになっているのかをすぐに確認できます。 my.cnfでスロークエリ