【问题标题】:In SSMS, display DateTimeOffset value in local timezone在 SSMS 中,以本地时区显示 DateTimeOffset 值
【发布时间】:2016-12-03 22:57:36
【问题描述】:

有没有办法将 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 Server 中是否有类似的东西?

【问题讨论】:

    标签: sql-server timezone ssms timezone-offset datetimeoffset


    【解决方案1】:

    SQL Server 和 SSMS 都无法使用“会话时区”的概念(如 Oracle、MySql 等)。

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

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

    SELECT yourdto AT TIME ZONE @thetimezoneid
    

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

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

    【讨论】:

      猜你喜欢
      • 2020-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-09
      • 1970-01-01
      • 2021-07-09
      • 1970-01-01
      相关资源
      最近更新 更多