如何在SQL Server 2005中存储时区

fra*_*lic 7 sql-server timezone datetime sql-server-2005

我正在构建一个用户可以输入事件的Web应用程序,包括

  • 活动标题
  • 开始日期/时间
  • 描述

用户想要输入开始日期/时间,包括与事件的位置相对应的时区.这些活动遍布全球,因此时区可以因事件而异.

在SQL Server后端数据库中,我使用datetime作为开始日期/时间.我应该使用哪种列类型来存储时区?诠释?浮动?十进制?

Joe*_*orn 10

时区是棘手的,邪恶的东西.它们通常存储为UTC偏移量,但即使这样也存在问题,例如夏令时变化时(如果有的话).

如果您使用的是Sql Server 2008,则可以使用datetimeoffset包含带值的utc偏移量的类型.否则你需要两列.


mke*_*bbs 5

由于您使用的是SQL Server 2005,我建议将时区存储为数据库中的字符串,特别是32个字符的字符串,因为这是Windows注册表中时区标识符的长度限制.

保存的值应该是TimeZoneInfo ID属性中的值(例如"Eastern Standard Time"),以便您可以更轻松地在.NET Framework中进行计算.

正如乔尔所说,时区是邪恶而棘手的.祝好运...