メインコンテンツまでスキップ

convert_tz

convert_tz

概要

一つのタイムゾーンから別のタイムゾーンに、DATEまたはDATETIMEの値を変換します。

この関数は異なるタイムゾーンに対して異なる結果を返す場合があります。詳細については、タイムゾーンの設定を参照してください。

構文

DATETIME CONVERT_TZ(DATETIME|DATE dt, VARCHAR from_tz, VARCHAR to_tz)

パラメータ

  • dt: 変換するDATEまたはDATETIMEの値です。
  • from_tz: 変換元のタイムゾーンです。VARCHARがサポートされています。タイムゾーンは2つの形式で表現できます。一つはタイムゾーンデータベース(例: Asia/Shanghai)で、もう一つはUTCオフセット(例: +08:00)です。
  • to_tz: 変換先のタイムゾーンです。VARCHARがサポートされています。形式はfrom_tzと同じです。

戻り値

DATETIMEデータ型の値を返します。入力がDATEの場合、DATETIMEに変換されます。この関数は、入力パラメータのいずれかが無効またはNULLの場合、NULLを返します。

使用上の注意

タイムゾーンデータベースについては、tzデータベースのタイムゾーンのリスト(Wikipedia)を参照してください。

例1: 上海の日時をロサンゼルスに変換する

select convert_tz('2019-08-01 13:21:03', 'Asia/Shanghai', 'America/Los_Angeles');
+---------------------------------------------------------------------------+
| convert_tz('2019-08-01 13:21:03', 'Asia/Shanghai', 'America/Los_Angeles') |
+---------------------------------------------------------------------------+
| 2019-07-31 22:21:03 |
+---------------------------------------------------------------------------+
1 row in set (0.00 sec) |

例2: 上海の日付をロサンゼルスに変換する

select convert_tz('2019-08-01', 'Asia/Shanghai', 'America/Los_Angeles');
+------------------------------------------------------------------+
| convert_tz('2019-08-01', 'Asia/Shanghai', 'America/Los_Angeles') |
+------------------------------------------------------------------+
| 2019-07-31 09:00:00 |
+------------------------------------------------------------------+
1 row in set (0.00 sec)

例3: UTC+08:00の日時をロサンゼルスに変換する

select convert_tz('2019-08-01 13:21:03', '+08:00', 'America/Los_Angeles');
+--------------------------------------------------------------------+
| convert_tz('2019-08-01 13:21:03', '+08:00', 'America/Los_Angeles') |
+--------------------------------------------------------------------+
| 2019-07-31 22:21:03 |
+--------------------------------------------------------------------+
1 row in set (0.00 sec)

キーワード

CONVERT_TZ, タイムゾーン, 時間帯