0

我有一个包含事件时间日志的表,我需要将 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加载了我的 TZ 数据和此处的信息https://dev.mysql.com/doc/refman/5.0/en/time-zone-support.html 。

4

1 回答 1

2

如果您尚未将时区表加载到MySQL. 试试这个(在 RHEL 的控制台中):

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

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

EDIT2:命名时区只有在MySQL数据库中的时区信息表已经创建和填充后才能使用。

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

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

于 2014-02-07T09:53:16.440 回答