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

MySQLのタイムゾーンを変更する方法【SETコマンドの使い方】

MySQLでタイムゾーンを変更したい場合、SETコマンドを使用します。この記事では、セッション単位およびグローバル単位でのタイムゾーン変更方法を、具体的な構文と実行例とともに解説します。

SETコマンドによるタイムゾーン変更の基本構文

現在のセッションのタイムゾーンを変更するには、以下の構文を使用します。

SET time_zone = 'someValue';

someValue の部分には、UTCからのオフセット(例:'+8:00')や、'Asia/Tokyo' などの名前付きタイムゾーンを指定できます。

セッションのタイムゾーンを変更する実行例

実際に上記の構文を使って、タイムゾーンをUTC+8に変更してみましょう。

mysql> SET time_zone = '+8:00';
Query OK, 0 rows affected (0.00 sec)

このクエリを実行すると、タイムゾーンが8時間分オフセットされた値に変更されます。なお、この方法での変更は現在のセッションのみに適用され、接続を切断すると元に戻ります。

グローバルにタイムゾーンを変更する方法

サーバー全体(すべての新規接続)に対してタイムゾーンを変更したい場合は、GLOBALキーワードを使用します。構文は以下の通りです。

SET GLOBAL time_zone = 'someValue';

実際の実行例は次のようになります。

mysql> SET GLOBAL time_zone = '+8:00';
Query OK, 0 rows affected (0.00 sec)

このクエリにより、MySQLサーバーのタイムゾーンがグローバルに変更されます。GLOBALで設定した値は、その後に確立される新しい接続に対して有効となります。既存の接続には影響しないため、必要に応じて再接続してください。

補足:タイムゾーン設定時の注意点

  • GLOBALによる変更はサーバー再起動後も保持されますが、設定ファイル(my.cnf / my.ini)の default-time-zone でも恒久的に指定可能です。
  • 'Asia/Tokyo' のような名前付きタイムゾーンを使用する場合は、mysqlシステムデータベースにタイムゾーンテーブルがロードされている必要があります。
  • 現在のタイムゾーン設定を確認するには、SELECT @@global.time_zone, @@session.time_zone; を実行します。
  1. MySQLクエリで「Empty set」を別の値に置き換える方法

    MySQLでは、該当するレコードが存在しない場合に返されるNULL値を、COALESCE関数を使って別の値に置き換えることができます。検索結果が空になったときに、デフォルト値を表示させたい場面で非常に便利です。COALESCE関数とはCOALESCEは、引数として渡された複数の値の中から、最初にNULLではない値を返す関数です。集計関数(MAXやSUMなど)の結果がNULLになるケースでは、第2引数で指定した代替値が代わりに返されます。サンプルテーブルの作成まず、動作確認用のテーブルを作成します。mysql> create table DemoTable -> ( -&

  2. MySQLでスロークエリログを設定する方法|遅いクエリの原因を特定する手順

    本番環境のMySQLサーバーを運用・管理していると、データベースの動作が突然遅くなることがあります。原因となっているクエリを特定するのは容易ではなく、かなりの時間を要する作業になりがちです。そんなときに役立つのが、MySQLに標準搭載されている「スロークエリログ」機能です。 スロークエリログとは スロークエリログとは、指定した実行時間を超えたクエリを自動的に記録する機能です。このログを有効にしておけば、データベースサーバーの動作が通常より遅いと感じたときに、ログファイルをテキストエディタで開くだけで、どのクエリがボトルネックになっているのかをすぐに確認できます。 my.cnfでスロークエリ