我有一个表,其中包含以下列(简化):
这个表保存了打开时间。datetime是服务器所在的时区,timezone是打开时间所在位置的时区。我想查询以本地时间结束的datetime列。
示例数据:
2022-07-08 11:00:00 | Europe/London
我的服务器在欧洲/巴黎,所以预期的输出将是2022-07-08 10:00:00
下面只给出我的NULL作为结果:
SELECT CONVERT_TZ(openingtime, 'Europe/Paris', timezone)
FROM openingtimes
要使用CONVERT_TZ(),你需要安装时区表,否则MySQL返回NULL。
加载时区:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
时区加载后:
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.25 |
+-----------+
1 row in set (0.00 sec)
mysql> SELECT CONVERT_TZ('2022-07-08 11:00:00', 'Europe/London','GMT') ;
+----------------------------------------------------------+
| CONVERT_TZ('2022-07-08 11:00:00', 'Europe/London','GMT') |
+----------------------------------------------------------+
| 2022-07-08 10:00:00 |
+----------------------------------------------------------+
1 row in set (0.00 sec)