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