【问题标题】:How to SELECT the UTC offset from a DateTimeOffset object?如何从 DateTimeOffset 对象中选择 UTC 偏移量?
【发布时间】:2012-12-13 04:32:16
【问题描述】:

我目前正在使用:

SELECT DATEPART(TZ, SYSDATETIMEOFFSET())

但是,它以分钟为单位返回偏移量。我想保留 '-05:00' 而不是 '-300' 的格式

谢谢。

【问题讨论】:

  • 不,它不是 mysql。它是 Microsoft SQL。
  • 好的..我之前在旧版本(2005)中查询,现在我真的理解你的问题:)
  • 你想要当前的偏移量还是特定日期的偏移量?
  • 数据库当前所在的偏移量。

标签: sql sql-server timezone


【解决方案1】:

在 MS SQL Server 中你也可以使用

SELECT DATENAME(tz, SYSDATETIMEOFFSET())

这将返回一个带有偏移量的 nvarchar

screenshot of the excecution result

【讨论】:

    【解决方案2】:

    如果要在 datetimeoffset 变量的末尾提取确切的字符串“-05:00”,可以使用 SQL Server 字符串操作。我认为使用内置的 SQL DateTime 函数不可能做到这一点。您可以使用 CAST 函数,我相信它默认为 ISO 8601 格式:

    declare @timeStr nvarchar(50) = CAST(SYSDATETIMEOFFSET() as nvarchar(50))
    select right(@timeStr, 6)
    

    如果要更明确一点,可以使用格式类型为 126 的 CONVERT 函数,明确告诉 SQL Server 使用 ISO 8601:

    declare @timeStr nvarchar(50) = CONVERT(nvarchar(50), SYSDATETIMEOFFSET(), 126)
    select right(@timeStr, 6)
    

    这两种方法在我的时区都返回:

    -06:00
    

    有关 CAST 和 CONVERT 的更多信息see here

    【讨论】:

    • 感谢您的好评。
    猜你喜欢
    • 2012-07-24
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    • 2011-04-11
    • 2020-03-02
    • 2011-01-02
    相关资源
    最近更新 更多