我正在try 将时区加载到我的MySQL实例(在Ubuntu上运行)中,以便可以使用CONVERT_TZ函数,但是当我运行以下命令时:

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

我得到以下输出,当我try 使用CONVERT_TZ时,它仍然返回NULL:

警告:无法按时间加载"/usr/share/zoneinfo/Asia/Riyadh87"

有人知道为什么会这样吗?

PS:

我使用以下方法转换DateTime:

CONVERT_TZ(NOW(),'UTC', 'PCT')

是否有可能我只是转换错误,这是导致空结果的原因?

推荐答案

这是Debian上Riyadh*时区文件的错误:

http://bugs.mysql.com/bug.php?id=20545

建议的解决方法是直接忽略该警告(当然,如果您不需要这些时区):

mysql_tzinfo_to_sql /usr/share/lib/zoneinfo | mysql -uroot --force mysql

使用--force选项导入TZ数据后,您将能够使用CONVERT_TZ.下面是我刚才所做工作的抄本:

sh$ mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot -p mysql --force 2> /dev/null
Enter password: ********
sh$ mysql -p
Enter password: ********
Server version: 5.1.49-3 (Debian)

mysql> select convert_tz(now(), 'UTC', 'CET');
+---------------------------------+
| convert_tz(now(), 'UTC', 'CET') |
+---------------------------------+
| 2013-08-13 21:04:34             |
+---------------------------------+
1 row in set (0.00 sec)

Database相关问答推荐

在MongoDB的树形 struct 中更新具有给定id的元素

在GO中减少LevelDB数据库大小的问题(Levigo)

MongoDB事务,回调API方法

数据库设计 - 类别(categories)和子类别(sub-categories)

什么技术对处理数百万条记录最有效?

PostgreSQL 将列从整数转换为文本

Postgres - 如何返回缺失数据计数为 0 的行?

什么是 Scalar标量查询?

Postgresql 从多个表中删除多行

保存图像:文件还是 blob?

从 XML 读取数据

在 MySQL 中实现一对一关系时确定外键

nvarchar (50) 与 nvarchar (max) 的含义

在 SQL 数据库之间共享数据

Hibernate 的 MariaDB 方言类名称是什么?

数据库中的整数与字符串

TransactionScope 是如何工作的?

唯一(多列)并且在一列中为空

将 NULL 插入 MySQL 时间戳

使用命令行在 Mysql 中导入压缩文件