在 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。您必须知道要使用哪个时区。
没有办法将 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。您必须知道要使用哪个时区。