如何解释 SQL 服务器中的 DateTimeOffset 列?

How to Interpret DateTimeOffset column in SQL Server?

如果我有 SQL 类型的列 datetimeoffset,该列的值告诉我什么?

例如,如果我看到 2017-03-27 15:00:00.6866682 -04:00 是当地时间吗?

意思是,美国东部时间下午 3 点和格林威治标准时间晚上 7 点?还是格林威治标准时间有一个偏移量,意思是格林威治标准时间下午 3 点和美国东部标准时间上午 11 点?

换句话说,如果一个网站记录了 datetimeoffset 用户登录,而我(在新英格兰)和我在莫斯科的朋友同时登录(我的时间是下午 3 点),我会见:

2017-03-27 15:00:00.6866682 -04:00
2017-03-27 22:00:00.6866682 +03:00

或:

2017-03-27 19:00:00.6866682 -04:00
2017-03-27 19:00:00.6866682 +03:00

或者,是否可以按服务器配置?如果是这样,我将如何检查设置?

谢谢。我以前处理过这个问题,但由于某些原因,这些知识根本无法坚持。

偏移量反映在值中。

2017-03-27 19:00:00.6866682 +03:00 = 2017-03-27 16:00:00.6866682 +00:00

http://rextester.com/YNJC2084

偏移量记录为当时有效的偏移量。因此,如果夏令时的时区偏移量发生变化,那么根据一年中的不同时间,您将看到给定时区的两个不同偏移量。

您可以使用 switchoffset() 来更改偏移量,例如

select switchoffset(sysdatetimeoffset(),'-05:00')

returns 2017-03-27 15:44:35 -05:00