要将时间转换为您的时区,您可以执行以下操作:
CONVERT_TZ(
REPLACE(
SUBSTRING(date, 1, 19), # '1986-07-10T00:00:00' .000+02:00
'T',
' '
),
IF(
SUBSTRING(date, 24) = 'Z',
'+00:00',
SUBSTRING(date, 24) # 1986-07-10T00:00:00.000 '+02:00'
),
'Europe/Brussels'
)
mysql 手册中的注释
要使用命名时区,例如“MET”或“Europe/Moscow”,必须正确设置时区表。有关说明,请参阅Section 10.6, “MySQL Server Time Zone Support”
更新示例
如果表包含:
SELECT * FROM so_peter;
+-------------------------------+
| tzdate |
+-------------------------------+
| 1986-07-10T00:00:00.000+02:00 |
| 1986-07-10T00:00:00.000Z |
| 2012-07-18T00:00:00.000+07:00 |
+-------------------------------+
这个查询的结果是:
SELECT tzdate FROM so_peter
WHERE CONVERT_TZ(REPLACE(SUBSTRING(tzdate, 1, 19), 'T', ' '), IF(SUBSTRING(tzdate, 24) = 'Z', '+00:00', SUBSTRING(tzdate, 24)), 'Europe/Brussels')
> '1986-07-10 01:00:00';
+-------------------------------+
| tzdate |
+-------------------------------+
| 1986-07-10T00:00:00.000Z |
| 2012-07-18T00:00:00.000+07:00 |
+-------------------------------+