C# MySQL时区支持
我在运行于Windows 2008 Server的MySQL服务器5.6上添加了时区支持。我已经将默认时区设置为GMT,这很好。此外,我还按照上的说明获取时区描述表 时区信息现在存储在mysql数据库下 我的另一个数据库使用带有外键的Innodb引擎,需要日期和时间的任何字段都以时间戳格式存储。在我的一个名为Company的表中,我需要输入他们的时区 我有两个问题C# MySQL时区支持,c#,mysql,date,datetime,timezone,C#,Mysql,Date,Datetime,Timezone,我在运行于Windows 2008 Server的MySQL服务器5.6上添加了时区支持。我已经将默认时区设置为GMT,这很好。此外,我还按照上的说明获取时区描述表 时区信息现在存储在mysql数据库下 我的另一个数据库使用带有外键的Innodb引擎,需要日期和时间的任何字段都以时间戳格式存储。在我的一个名为Company的表中,我需要输入他们的时区 我有两个问题 我应该为某个公司或该公司所属的城市/州/地区指定时区吗 理想的情况下,我想把他们的时区和一个外国的时区联系起来。但是如果时区ID等
- 我应该为某个公司或该公司所属的城市/州/地区指定时区吗
- 理想的情况下,我想把他们的时区和一个外国的时区联系起来。但是如果时区ID等在mysql数据库中,这怎么可能呢?我不希望普通的mysql用户能够访问mysql数据库
处理此类问题的最佳做法是什么。我认为您不应该试图通过DB管理时区 如果您将PHP与MySQL结合使用,则可以轻松地转换时区。 对于日期或任何事情:不要使用时区!利用和利用时间戳: :
你一定要看:
我应该为单个公司或该公司所属的城市/州/地区指定时区吗
这是非常依赖于应用程序的,但一般来说,您应该考虑将时区分配给公司的特定位置。一个有多个办公室的公司可能在不同的时区拥有这些办公室。但是您应该仔细考虑这对于您的特定用例意味着什么
尝试将时区指定给区域通常不是一个好主意,因为存在太多的边缘情况。有许多国家和州有多个时区,也有一些城市有多个时区(尽管不太常见) 通常,将时区分配给单个用户或特定事件。这取决于您的应用程序需要什么 理想的情况下,我想把他们的时区和一个外国的时区联系起来。但是如果时区ID等在mysql数据库中,这怎么可能呢?我不希望普通的mysql用户能够访问mysql数据库 MySQL使用。(另请参见和。) 由于.Net不使用此数据,如果要将内容与数据库对齐,则需要使用库,例如或。(我强烈推荐野田时间。) 当然,只有当您实际需要处理数据库中的时区时,才需要这样做。通常,您不会有这样的要求 处理这类问题的最佳做法是什么 这里有一个完整的最佳实践列表。然而,您应该做什么在很大程度上取决于您的实际需求。没有一个一刀切的答案 通常,最好的方法是将UTC值存储在数据库中,并在特定时区之间进行转换以显示。在这种情况下,数据库中根本不需要时区数据,您可以选择使用IANA时区,或者使用.Net的TimeZoneInfo
类附带的Windows时区
您可能需要在数据库中提供时区支持的一个例子是,如果您有一些要求,例如“我想要一个按天分组的报告,其中一天是在特定时区的本地定义的。哦,我希望该报告的每个查看者都有自己的本地数据视图,该视图根据他们对“天”的理解进行调整。”您可以使用:Int32 unixtimestap=(Int32)(DateTime.Now.Subtract(newdatetime(1970,1,1))).TotalSeconds;如果您正在查找当前时刻的unix时间戳,那么实际上会给出错误的值。您需要改用
DateTime.UtcNow
。