我有一张包含事件时间日志的表格,我需要将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。
答案 0 :(得分:1)
如果您尚未将时区表加载到MySQL
,则会发生这种情况。试试这个(在RHEL的控制台中):
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
编辑:您只需要加载一次表。它将信息加载到MySQL
的表中,从那时起使用它。
EDIT2 :仅当MySQL
数据库中的时区信息表已创建并填充时,才能使用命名时区。
MySQL
安装过程在MySQL数据库中创建时区表,但不加载。
有关详细信息,请参阅5.1.x版documentation。