MySQL时区支持



我在Windows 2008服务器上运行的MySQL Server 5.6上添加了时区支持。我将默认时间区域设置为GMT,该区域正常。此外,我遵循http://dev.mysql.com/downloads/timezones.html的说明获取时区说明表。

时区信息现在存储在MySQL数据库下。

我的其他数据库是使用InnoDB引擎和外国密钥的任何需要日期和时间的字段以时间戳格式存储。在我的一张名为Company的表中,我需要提及他们的时区。

我有两个问题;

  • 我应该向单个公司或该公司属于

  • 的城市/州/地区提供时区
  • 理想情况下,我想将他们的时区链接起来,无论它是与外国人所引用的地方。但是,如果MySQL数据库中的时区ID等在我不希望可以访问的普通MySQL用户中。

处理此类问题的最佳实践是什么。

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

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

尝试将时区分配到一个区域,这通常不是一个好主意,因为边缘案例太多。有许多国家和州都有多个时区,还有一些城市也是如此(尽管不那么普遍)。

通常,时区被分配给单个用户或特定事件。这仅取决于您的应用程序所需的内容。

理想情况下,我想将他们的时区链接起来,无论它与外国人所引用。但是,如果MySQL数据库中的时区ID等在我不希望可以访问的普通MySQL用户中,那该怎么可能。

MySQL使用IANA/OLSON时区数据库。(另请参阅时区标签Wiki和Wikipedia。)

由于.NET不使用此数据,因此,如果要与数据库对齐,则需要使用库,例如NODA TIME或TZ4NET。(我强烈建议NODA时间。)

当然,仅当您实际需要在数据库中使用时区时才需要。通常,您将没有这样的要求。

处理此类问题的最佳实践是什么。

这里有最佳实践列表。但是,您应该做的很大程度上取决于您的实际要求。没有一个尺寸适合所有答案。

通常,最好的方法是将值存储在数据库中,然后转换为从特定时区域转换以进行显示。在这种情况下,您根本不需要DB中的时区数据,您可以选择使用IANA时区,或使用.NET的TimeZoneInfo类带有Windows时区。

数据库中可能需要时区支持的一个示例是您有一些要求,例如"我想要一天按日期分组的报告,其中一天定义为特定时区域。哦,我希望该报告的每个查看者都有自己对数据的本地视图,这些视图已将其调整为"一天"是什么。"

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

如果您将PHP与MySQL一起使用,则可以轻松地翻译时区。对于日期或任何内容:不使用时区!使用和优势的时间戳:

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

您绝对应该观看:http://www.youtube.com/watch?v=-5wpm-gesoy

相关内容

  • 没有找到相关文章

最新更新