MySQL CONVERT_TZ不适用于 2 个相同的转换



我得到了一个包含事件时间日志的表,我需要将 2 列转换为公共时区。

所以如果我这样做(转换为不同的时区)

        SELECT id
            ,CONVERT_TZ(starting_time, 'UTC', 'Europe/London') AS starting_time
            ,CONVERT_TZ(finishing_time, 'UTC', 'Europe/Madrid') AS finishing_time
        FROM table

我得到了所有的时间,但如果我跑

        SELECT id
            ,CONVERT_TZ(starting_time, 'UTC', 'Europe/London') AS starting_time
            ,CONVERT_TZ(finishing_time, 'UTC', 'Europe/London') AS finishing_time
        FROM table

数据一直NULL.

我使用 MySQL 5.1.63 从 RHEL 5 上的/usr/share/zoneinfo https://dev.mysql.com/doc/refman/5.0/en/time-zone-support.html 这里加载了我的 TZ 数据。

如果您尚未将时区表加载到MySQL中,则会发生这种情况。试试这个(在 RHEL 的控制台中):

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

编辑:您只需要加载一次表。它将信息加载到一个表中 MySQL 中,从此使用。

EDIT2:仅当已创建并填充MySQL数据库中的时区信息表时,才能使用命名时区。

MySQL安装过程在MySQL数据库中创建时区表,但不加载它们

有关详细信息,请参阅版本 5.1.x 文档。

最新更新