跳到主要内容
版本: 最新版本-3.5

convert_tz

将 DATE 或 DATETIME 值从一个时区转换为另一个时区。

此函数可能会为不同的时区返回不同的结果。 有关详细信息,请参见配置时区

语法

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

参数

  • dt:要转换的 DATE 或 DATETIME 值。

  • from_tz:源时区。 支持VARCHAR。 时区可以用两种格式表示:一种是时区数据库(例如Asia/Shanghai),另一种是UTC偏移量(例如+08:00)。

  • to_tz:目标时区。 支持VARCHAR。 其格式与from_tz相同。

返回值

返回DATETIME数据类型的值。如果输入是DATE值,则将其转换为DATETIME值。如果任何输入参数无效或为NULL,则此函数返回NULL。

使用说明

有关时区数据库,请参见时区数据库列表(在维基百科中)。

示例

示例1:将上海的datetime转换为Los_Angeles。

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:将上海的date转换为Los_Angeles。

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中的datetime转换为Los_Angeles。

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,时区,时区