【问题标题】:Timing compare in SQL Server 2008SQL Server 2008 中的时间比较
【发布时间】:2011-03-19 09:47:02
【问题描述】:

如何在 SQL Server 2008 中比较印度时间与世界其他国家/地区时间?

意味着我想知道在印度的午夜 1 点,通过 SQL Server 2008 在其他国家/地区的时间安排是什么

【问题讨论】:

  • 您能否介绍一下您将如何使用和/或访问这些信息?您是否对多个 SQL 服务器之间的时区差异感兴趣,或者只是一种查找地理位置时间偏移的方法?

标签: sql tsql sql-server-2008 timezone


【解决方案1】:

看看SYSUTCDATETIME():

SELECT SYSDATETIME(), SYSUTCDATETIME();

使用 UTC 时间,您可以轻松计算任何其他国家/地区的时间。

【讨论】:

    【解决方案2】:

    SQL Server 2008 使用DateTimeOffset 类型来表示带有时区偏移的 DateTime。

    您可以使用SWITCHOFFSET 函数将值从一个时区转换为另一个时区。

    要根据现有日期值创建特定时区的 DateTimeOffset 值,请使用 TODATETIMEOFFSET

    您可以使用SYSDATETIMEOFFSET 获取当前日期和时间,包括偏移量。

    最后,您可以使用普通的DATEDIFF 来比较 DateTimeOffset 值并获得它们的差异。

    要获取您在印度的当前时间并将其切换到另一个时区,您必须知道正确的时间偏移量。该声明将类似于

    DECLARE @localTime DATETIMEOFFSET=SYSDATETIMEOFFSET()
    SELECT @localTime, SWITCHOFFSET(@localTime,'-5:00')
    

    【讨论】:

      【解决方案3】:
      DECLARE @indianTime DATETIME = GETDATE()
      DECLARE @timeZoneOffset SMALLINT = 3 -- or -3
      
      SELECT DATEADD(hour, @timeZoneOffset, @indianTime)
      

      查看下一篇 MSDN 文章:12


      但最好使用支持时区的SQL Server 2008和DateTimeOffset类型。

      所以你可以做下一步:

      DECLARE @indianTime DATETIME = SYSDATETIMEOFFSET()
      DECLARE @timeZoneOffset NVARCHAR(6) = '-03:00'
      
      SELECT SWITCHOFFSET(@indianTime, @timeZoneOffset)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-23
        • 2011-05-27
        • 2016-11-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多