Sql server 日期时间还是时间戳我更喜欢哪一个?
我正在使用SQLServer2008。服务器在印度。我想存储用户的登录和注销时间。我可以在SQL Server中轻松地完成这项工作 现在我们有来自不同国家的客户/管理员,他们将检查这些登录/注销时间。他们希望这些时间在各自的时区内 还有一种情况是我的客户从一个国家旅行到另一个国家,因此日志时间应该根据时区自动更新 所以我的理解是,我必须为客户存储时区信息和日期时间。这样我就可以使用Sql server 日期时间还是时间戳我更喜欢哪一个?,sql-server,date,datetime,timezone,timestamp,Sql Server,Date,Datetime,Timezone,Timestamp,我正在使用SQLServer2008。服务器在印度。我想存储用户的登录和注销时间。我可以在SQL Server中轻松地完成这项工作 现在我们有来自不同国家的客户/管理员,他们将检查这些登录/注销时间。他们希望这些时间在各自的时区内 还有一种情况是我的客户从一个国家旅行到另一个国家,因此日志时间应该根据时区自动更新 所以我的理解是,我必须为客户存储时区信息和日期时间。这样我就可以使用TimeZoneInfo::ConvertTime方法转换到不同的时区 我可以让我的客户在注册时选择保存他们的时区
TimeZoneInfo::ConvertTime
方法转换到不同的时区
我可以让我的客户在注册时选择保存他们的时区
但我的疑问是,如果我的客户改变了他的国家,他们是否需要手动改变时区,或者是否有任何方法可以自动检测时区。检查系统时区是否可行
或者无论如何,存储时间戳可以帮助我?使用
datetimeoffset
。我的公司在欧洲、几个亚洲国家和北美都有业务。对应用程序进行编码,以便将当前计算机的时区设置传递给数据库。当用户旅行时,Windows可以在检测到用户的地理位置时更新时区信息。我从来不用那样担心DST(想象一下在两大洲处理夏令时的乐趣)
由于时区信息是存储的,我可以将其转换为我想要的任何时区。或者,读取数据的应用程序可以使用本地计算机时区执行此操作。使用datetime(或datetime2,具体取决于精度)以UTC格式存储数据。将UTC转换为UTC要容易得多。我在MSSQLTips.com上有一个由三部分组成的系列文章,在“日期”类别下查看我的三篇文章。@AaronBertrand:获取客户时区的最佳方法是什么?如果他们登录到您的系统,您只需请求一次,就可以了。如果您想依赖浏览器,可以从客户端获得它(JavaScript可以帮助您实现与UTC之间的转换,而不是让SQL Server承担这一任务)。