Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 日期时间还是时间戳我更喜欢哪一个?_Sql Server_Date_Datetime_Timezone_Timestamp - Fatal编程技术网

Sql server 日期时间还是时间戳我更喜欢哪一个?

Sql server 日期时间还是时间戳我更喜欢哪一个?,sql-server,date,datetime,timezone,timestamp,Sql Server,Date,Datetime,Timezone,Timestamp,我正在使用SQLServer2008。服务器在印度。我想存储用户的登录和注销时间。我可以在SQL Server中轻松地完成这项工作 现在我们有来自不同国家的客户/管理员,他们将检查这些登录/注销时间。他们希望这些时间在各自的时区内 还有一种情况是我的客户从一个国家旅行到另一个国家,因此日志时间应该根据时区自动更新 所以我的理解是,我必须为客户存储时区信息和日期时间。这样我就可以使用TimeZoneInfo::ConvertTime方法转换到不同的时区 我可以让我的客户在注册时选择保存他们的时区

我正在使用SQLServer2008。服务器在印度。我想存储用户的登录和注销时间。我可以在SQL Server中轻松地完成这项工作

现在我们有来自不同国家的客户/管理员,他们将检查这些登录/注销时间。他们希望这些时间在各自的时区内

还有一种情况是我的客户从一个国家旅行到另一个国家,因此日志时间应该根据时区自动更新

所以我的理解是,我必须为客户存储时区信息和日期时间。这样我就可以使用
TimeZoneInfo::ConvertTime
方法转换到不同的时区

我可以让我的客户在注册时选择保存他们的时区

但我的疑问是,如果我的客户改变了他的国家,他们是否需要手动改变时区,或者是否有任何方法可以自动检测时区。检查系统时区是否可行


或者无论如何,存储时间戳可以帮助我?

使用
datetimeoffset
。我的公司在欧洲、几个亚洲国家和北美都有业务。对应用程序进行编码,以便将当前计算机的时区设置传递给数据库。当用户旅行时,Windows可以在检测到用户的地理位置时更新时区信息。我从来不用那样担心DST(想象一下在两大洲处理夏令时的乐趣)


由于时区信息是存储的,我可以将其转换为我想要的任何时区。或者,读取数据的应用程序可以使用本地计算机时区执行此操作。

使用datetime(或datetime2,具体取决于精度)以UTC格式存储数据。将UTC转换为UTC要容易得多。我在MSSQLTips.com上有一个由三部分组成的系列文章,在“日期”类别下查看我的三篇文章。@AaronBertrand:获取客户时区的最佳方法是什么?如果他们登录到您的系统,您只需请求一次,就可以了。如果您想依赖浏览器,可以从客户端获得它(JavaScript可以帮助您实现与UTC之间的转换,而不是让SQL Server承担这一任务)。