首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL时区支持

MySQL时区支持
EN

Stack Overflow用户
提问于 2014-01-31 12:52:28
回答 2查看 939关注 0票数 0

我在运行在Windows2008Server上的WindowsServer5.6上添加了时区支持。我已经将默认时区设置为格林尼治标准时间,这很好。此外,我还按照http://dev.mysql.com/downloads/timezones.html的说明获得时区描述表。

时区信息现在存储在mysql数据库中。

我的另一个数据库使用带有外键的Innodb引擎,任何需要日期和时间的字段都以时间戳格式存储。在我的一个名为Company的表中,我需要引用他们的时区。

我有两个问题;

  • 我是否应该将时区指定给个别公司,还是属于该公司所属的城市/州/地区?
  • 理想情况下,我想链接他们的时区,在任何时候它都是引用一个外来者。但是,如果时区ids等位于mysql数据库中,这是怎么可能的?我不希望普通mysql用户能够访问该数据库。

处理这类问题的最佳做法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-31 19:19:57

我应该将时区分配给单个公司,还是分配给该公司所属的城市/州/地区?

这是非常依赖于应用程序的,但通常您应该考虑将时区分配到公司的特定位置。一家拥有多个办事处的公司可能会在不同的时区设置它们。但是,您应该考虑一下这对您特定的用例意味着什么。

通常向某个区域分配时区并不是一个好主意,因为边缘情况太多了。有许多国家和州有多个时区,也有几个城市也有这样的情况(尽管不是很常见)。

通常,时区分配给单个用户或特定事件。这取决于您的应用程序需要什么。

理想情况下,我想链接他们的时区,在任何时候它都是引用一个外来者。但是,如果时区ids等位于mysql数据库中,这是怎么可能的?我不希望普通mysql用户能够访问该数据库。

MySQL使用IANA/Olson时区数据库。(还请参阅时区标记wiki维基百科。)

因为.Net不使用这些数据,所以如果您想要与数据库对齐,就需要使用库,例如野田时间TZ4Net。(我强烈推荐野田时间。)

当然,只有当您实际需要处理数据库中的时区时,才需要这样做。通常,你将没有这样的要求。

处理这类问题的最佳做法是什么?

有一个完整的最佳实践清单这里。但是,您应该做的事在很大程度上取决于实际的需求。没有一个合适的答案。

通常,最好的方法是在数据库中存储UTC中的值,并转换到和从某个时区进行显示。在这种情况下,您根本不需要数据库中的时区数据,您可以选择使用IANA时区,也可以选择使用.NET的TimeZoneInfo类附带的Windows。

在数据库中可能需要时区支持的一个例子是,如果您有一些要求,比如“我想要一个按日分组的报表,其中一天是在特定时区的本地定义的。哦,我希望该报告的每个查看者都有自己的数据本地视图,并根据他们对‘一天’的概念进行调整。”

票数 0
EN

Stack Overflow用户

发布于 2014-01-31 14:52:35

在我看来,您不应该尝试通过DB管理Timezone。

如果您在MySQL中使用PHP,您可以轻松地转换时区。对于日期或任何事情:不使用时区!利用和利用时间戳:

http://fr.php.net/time<?php time(); ?>

你绝对应该看http://www.youtube.com/watch?v=-5wpm-gesOY

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

https://stackoverflow.com/questions/21480551

复制
相关文章

相似问题

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