convert_tz
功能
将给定的时间转化为另一个时区的时间。
该函数受时区影响,具体参见 设置时区。
语法
DATETIME CONVERT_TZ(DATE|DATETIME dt, VARCHAR from_tz, VARCHAR to_tz)
参数说明
dt
:需要转化的时间。支持的数据类型为 DATE 和 DATETIME。from_tz
:源时区名称。支持的数据类型为 VARCHAR。 时区可以使用两种格式:时区信息数据库(Time Zone Database,比如 Asia/Shanghai),或 UTC 偏移量(例如+08: 00)。to_tz
:目标时区名称。支持的数据类型为 VARCHAR。格式同参数from_tz
。
返回值说明
返回值的数据类型为 DATETIME。如果输入值为 DATE,默认基于 00:00:00进行转换。如果输入值类型不合法,返回NULL
。
注意事项
各时区对应的时区信息数据库,请参见时区数据库(来源:维基百科)。
示例
示例一:将上海时间转化为洛杉矶时间。
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)
示例二:将东八区时间转化为洛杉矶时间。
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)
示例三:将 DATE 类型的日期 2019-08-01
进行转化。
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)