首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用时区名称在MySQL中转换时区?

如何使用时区名称在MySQL中转换时区?
EN

Database Administration用户
提问于 2015-12-16 15:08:03
回答 2查看 21K关注 0票数 8

我想在MySQL中将日期从一个时区转换为另一个时区,我正在尝试的MySQL查询是

代码语言:javascript
运行
复制
SELECT DATE_FORMAT(CONVERT_TZ('2015-12-18 06:00:00', '+0:00', '-05:00' ),'%b %d %Y %h:%i %p') AS test
FROM appointment

正在正常工作。现在我遇到的问题是,我的数据库使用时区名为America/New_York。

是否有任何方法可以使用时区名称而不是时区偏移量来转换时区?

EN

回答 2

Database Administration用户

回答已采纳

发布于 2015-12-31 10:29:48

最后,我得到了答案:

MySQL安装过程在mysql数据库中创建一组时区表。在Windows上,表是预初始化mysql数据库的一部分。在Unix上,表是在执行mysql_install_db时创建的,或者在RPM安装期间自动创建,或者在从tar文件安装时手动创建。但是,这些时区表是作为空表创建的,这意味着不能使用命名时区。

若要启用命名时区,必须加载表。这是一个可选的配置过程,但除非执行,时区支持仅限于系统区域和数值偏移(如'+06:00‘)。

在具有时区文件的系统上,最好使用它们加载MySQL时区表,以确保系统和MySQL时区基于相同的信息。许多Unix系统都有这些文件,通常位于/usr/share/zoneinfo下面。对于这样的系统,使用mysql_tzinfo_to_sql程序将文件内容转换为可以通过MySQL程序加载到mysql中的SQL语句。如果文件位于/usr/share/zoneinfo,命令如下所示:

代码语言:javascript
运行
复制
shell> mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql

有些系统没有时区文件,如Windows和HP.对于这些情况,MySQL提供了一个发行版( http://dev.mysql.com/downloads/timezones.html ),它包含一组填充的时区表(以MyISAM表文件的形式)。您可以下载发行版并在mysql数据库中安装文件以替换空表。停止服务器,将文件复制到mysql数据库目录,然后重新启动服务器。

票数 2
EN

Database Administration用户

发布于 2015-12-16 15:27:36

回答以下问题:

有没有办法使用时区名称而不是时区偏移量来转换时区?

函数CONVERT_TZ有以下示例和警告:

代码语言:javascript
运行
复制
mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
    -> '2004-01-01 13:00:00'

注若要使用命名时区(如“MET”或“欧洲/莫斯科”),必须正确设置时区表。有关说明,请参阅10.6节“MySQL服务器时区支持”。

关于时区支援的部分有一个“填充时区表”部分,它描述了设置mysql表的过程。

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/123835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档