转换datetime mysql与时区从同一表



我有一个表,其中包含以下列(简化):

这个表保存了打开时间。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)

最新更新