MySQLのnow()で取得した現在時刻をGMT+0(UTC)に変換する方法
MySQLで現在時刻をGMT+0(UTC)に変換するには?
MySQLでnow()関数を使って現在の時刻を取得した後、その時刻をGMT+0(UTC)に変換したいケースはよくあります。このような場合には、utc_timestamp()関数を使用すると簡単に実現できます。
基本構文
SELECT utc_timestamp();
utc_timestamp()は、サーバー側のタイムゾーン設定に関係なく、常に協定世界時(UTC/GMT+0)での現在日時を返してくれる便利な関数です。
ステップ1:now()で現在時刻を確認する
まず、比較のためにnow()関数でサーバーのローカル時刻を確認してみましょう。以下のクエリを実行します。
mysql> select now();
実行結果は次のとおりです。
+---------------------+ | now() | +---------------------+ | 2019-04-11 17:50:05 | +---------------------+ 1 row in set (0.00 sec)
この例では、サーバーのローカルタイムゾーンにおける現在時刻「2019-04-11 17:50:05」が返されています。
ステップ2:utc_timestamp()でGMT+0の時刻を取得する
続いて、GMT+0(UTC)の時刻を取得するためのクエリです。
mysql> SELECT utc_timestamp();
実行結果は次のとおりです。
+---------------------+ | utc_timestamp() | +---------------------+ | 2019-04-11 12:20:08 | +---------------------+ 1 row in set (0.00 sec)
このように、utc_timestamp()を使えば、ローカル時刻からタイムゾーンの差分を引いたUTC基準の日時をそのまま取得できます。ログの記録や国際的なシステム間でのデータ連携など、時刻を必ずUTCで扱いたい場面で非常に役立ちます。
補足:CONVERT_TZ()を使った別の方法
タイムゾーンテーブルが読み込まれている環境では、CONVERT_TZ()関数を使って任意のタイムゾーン間の変換を行うことも可能です。たとえば、日本標準時(JST、UTC+9)の現在時刻をUTCに変換するには、次のように記述します。
SELECT CONVERT_TZ(NOW(), '+09:00', '+00:00');
用途に応じてutc_timestamp()とCONVERT_TZ()を使い分けることで、柔軟な時刻処理が実現できます。
-
MySQLで現在の日付より前の日付データを抽出する方法
MySQLでは、NOW() 関数と比較演算子を使うことで、現在の日時より前の日付を持つレコードを簡単に抽出できます。この記事では、実際にテーブルを作成し、サンプルデータを登録したうえで、現在日時より過去の日付レコードを取得する手順を解説します。 1. サンプルテーブルの作成 まず、日付型(DATETIME)のカラムを持つテーブルを作成しましょう。 mysql> create table DemoTable1877 ( DueDate datetime ); Query OK, 0 rows affected (0.00 sec) 2. テストデータの挿入 次に、IN
-
MySQLのフィールドに現在の日付を設定する方法(UNIX_TIMESTAMP(now)の使い方)
MySQLでは、unix_timestamp()関数を使うことで、現在の日時をUNIXタイムスタンプとして取得し、テーブルのフィールドに簡単に設定できます。この記事では、実際にテーブルを作成し、現在の日付(UNIXタイムスタンプ)をフィールドに設定する手順を解説します。UNIXタイムスタンプとはUNIXタイムスタンプとは、1970年1月1日00:00:00 UTCからの経過秒数を表す数値です。日時を整数として扱えるため、比較や計算が容易になり、データベースでの時間管理によく利用されます。サンプルテーブルの作成まず、以下のようにCREATE TABLE文でテーブルを作成します。mysql>