【问题标题】:Get HOUR from AT TIME ZONE从 AT TIME ZONE 获取 HOUR
【发布时间】:2018-12-07 13:57:11
【问题描述】:

我的数据库在 Azure 中。我需要我当地(以色列)的时间。

SELECT GETDATE() AT TIME ZONE 'Israel Standard Time', 
        DATEPART(HOUR,(GETDATE() AT TIME ZONE 'Israel Standard Time'))

返回 13:

(No column name)                (No column name)
2018-12-07 13:43:34.893 +02:00  13

我需要它返回 15,因为它是 13 (+2)=15 我想在不添加 2 个硬编码的情况下做到这一点。

【问题讨论】:

  • GETDATE() 已经是本地时间(对于“本地”的某些值)并且没有时区信息 - 除非做出假设,否则使用 AT TIME ZONE 添加一些不会产生正确的结果。你确定你不想要像SELECT DATEPART(HOUR, SYSDATETIMEOFFSET() AT TIME ZONE 'Israel Standard Time') 这样的东西吗?请注意,如果日期因偏移而发生变化,则“小时”可能信息不足。

标签: sql sql-server tsql datetimeoffset


【解决方案1】:

试试这个:

SELECT GETDATE() AT TIME ZONE 'Israel Standard Time'
      ,DATEPART(HOUR,(GETDATE() AT TIME ZONE 'Israel Standard Time'))
      ,DATEPART(HOUR,(CONVERT(DATETIMEOFFSET, GETDATE(), 121) AT TIME ZONE 'Israel Standard Time'))

【讨论】:

    猜你喜欢
    • 2021-11-12
    • 2011-03-14
    • 1970-01-01
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    • 2018-04-17
    • 1970-01-01
    相关资源
    最近更新 更多