MariaDBでは、CONVERT_TZ()
は、日時値をあるタイムゾーンから別のタイムゾーンに変換する組み込みの日時関数です。
関数を呼び出すときは、3つの引数を渡します。時間、変換するタイムゾーン 、およびからに変換するタイムゾーン 。
構文
構文は次のようになります:
CONVERT_TZ(dt,from_tz,to_tz)
dt
日時式、from_tz
からに変換するタイムゾーンです 、およびto_tz
からに変換するタイムゾーンです 。
例
次に例を示します:
SELECT CONVERT_TZ('2021-05-10 01:00:00', '+00:00', '+10:00');
結果:
+-------------------------------------------------------+ | CONVERT_TZ('2021-05-10 01:00:00', '+00:00', '+10:00') | +-------------------------------------------------------+ | 2021-05-10 11:00:00 | +-------------------------------------------------------+
ここでは、元のタイムゾーンは+00:00であり、+ 10:00に変換しました。
別の開始タイムゾーンを使用すると、次のようになります。
SELECT CONVERT_TZ('2021-05-10 01:00:00', '+03:00', '+10:00');
結果:
+-------------------------------------------------------+ | CONVERT_TZ('2021-05-10 01:00:00', '+03:00', '+10:00') | +-------------------------------------------------------+ | 2021-05-10 08:00:00 | +-------------------------------------------------------+
名前付きタイムゾーン
名前付きのタイムゾーンを使用できますが、これにはさまざまなタイムゾーンテーブルがロードされている必要があります。
タイムゾーンテーブルがない場合は次のようになります。 設定済み:
SELECT
CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham');
結果:
+-------------------------------------------------------------+ | CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham') | +-------------------------------------------------------------+ | NULL | +-------------------------------------------------------------+
結果はnull
です 、タイムゾーンテーブルにタイムゾーンデータがないためです。
これも同じクエリですが、今回はタイムゾーンテーブルのデータを使用しています:
SELECT
CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham');
結果:
+-------------------------------------------------------------+ | CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham') | +-------------------------------------------------------------+ | 2021-05-10 13:45:00 | +-------------------------------------------------------------+
範囲外の日時値
値がサポートされているTIMESTAMP
の範囲外の場合、変換は行われません。 範囲('1970-01-01 00:00:01'
to '2038-01-19 05:14:07'
UTC)from_tz
UTCへ。
例:
SELECT CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+10:00');
結果:
+-------------------------------------------------------+ | CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+10:00') | +-------------------------------------------------------+ | 2040-05-10 01:00:00 | +-------------------------------------------------------+
無効な引数
いずれかの引数が無効な場合は、CONVERT_TZ()
null
を返します 。
例:
SELECT CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+90:00');
結果:
+-------------------------------------------------------+ | CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+90:00') | +-------------------------------------------------------+ | NULL | +-------------------------------------------------------+
この場合、日時式を無効なタイムゾーン(+90:00
)に変換しようとしました )、したがってnull
返されました。
ヌル引数
引数がnull
の場合 、結果はnull
です :
SELECT
CONVERT_TZ(null, '+00:00', '+90:00') AS "1",
CONVERT_TZ('2021-05-10 01:00:00', null, '+90:00') AS "2",
CONVERT_TZ('2021-05-10 01:00:00', '+00:00', null) AS "3";
結果:
+------+------+------+ | 1 | 2 | 3 | +------+------+------+ | NULL | NULL | NULL | +------+------+------+
引数がありません
CONVERT_TZ()
を呼び出す 引数の数が間違っているか、引数を渡さないと、エラーが発生します:
SELECT CONVERT_TZ();
結果:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'CONVERT_TZ'