【问题标题】:SQL Server variant from Oracle TZ_OFFSETOracle TZ_OFFSET 的 SQL Server 变体
【发布时间】:2018-03-08 11:10:29
【问题描述】:

以下SQL在Oracle中的执行:

SELECT TZ_OFFSET('Europe/Brussels') from dual;

返回值 +02:00

请注意,此函数可用于 Olsson 表示法的任何时区。这与数据库服务器无关。

我想知道 MS Sql Server 中是否存在类似的功能,您可以在其中询问给定时区的偏移量(以微软时区表示法)。

【问题讨论】:

  • 这仅与数据库服务器时区有关,我的问题与任何时区有关
  • 您真正想要什么?查询 SQL 服务器?还是甲骨文?
  • 我正在寻找 Sql Server,我给出了我想要的 Sql Server 中的 Oracle 示例。

标签: sql sql-server oracle timezone offset


【解决方案1】:

从 SQL 2016 开始,在 Azure SQL 数据库中,您可以通过以下方式实现:

SELECT DATENAME(tz, SYSDATETIMEOFFSET() AT TIME ZONE 'Romance Standard Time')

-- Output: '+02:00'

注意时区名称是 Windows 时区标识符,而不是 IANA TZ(又名 Olson)标识符。有关差异的更多信息,请参阅the timezone tag wiki

如果您想使用 IANA TZ 标识符,或者如果您使用的是没有 AT TIME ZONE 函数的旧版本 SQL Server,那么您可以使用我的 SQL Server Time Zone Support project,并带有以下内容:

SELECT DATENAME(tz, Tzdb.SwitchZone(SYSDATETIMEOFFSET(), 'Europe/Brussels'))

-- Output: '+02:00'

另外,请注意,只能针对特定参考点的时区计算偏移量。在我的示例中,您可以看到我使用SYSDATETIMEOFFSET() 选择了当前系统时间。 (当前时间是隐式与Oracle的TZ_OFFSET函数。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    • 2016-12-14
    • 2014-06-22
    • 2021-05-20
    • 1970-01-01
    相关资源
    最近更新 更多