在 SSMS 中,以本地时区显示 DateTimeOffset 值

In SSMS, display DateTimeOffset value in local timezone

没有办法将 Sql Server Management Studio 配置为在查询结果中显示客户端本地时区的 DateTimeOffset 列的值,而不是 UTC 吗?

示例:我在时区 +02:00。值存储为 2016-07-27 22:00:00.0000000 +00:00。目前,此值在查询结果中显示为这样。我希望在我机器上的 SSMS 上执行此查询时将其显示(格式化)为 2016-07-28 00:00:00.0000000 +02:00

目前我正在手动使用类似SWITCHOFFSET(CONVERT(datetimeoffset, <DateColumn>), DATENAME(TzOffset, SYSDATETIMEOFFSET()))的东西,这显然很麻烦。

如果我没记错的话,在 Oracle 中会话级别的 NLS 参数可以用于此目的。 Sql服务器中有类似的东西吗?

SQL 服务器和 SSMS 都无法使用 "session time zone" 的概念(如 Oracle、MySql 等)。

此外,无论如何自动转换偏移量是没有意义的,因为偏移量实际上是存储的 datetimeoffset 值的一部分。

如果您使用 SQL Server 2016 或 Azure SQL 数据库,您可以使用新的 AT TIME ZONE 语句,如:

SELECT yourdto AT TIME ZONE @thetimezoneid

否则,请考虑使用我的 SQL Server Time Zone Support 项目。

两者都不能为您提供系统的时区 ID。您必须知道要使用哪个时区。