【问题标题】:SQL Find if two UTC Dates are in the same calendar daySQL查找两个UTC日期是否在同一个日历日
【发布时间】:2017-01-04 08:24:00
【问题描述】:

我有一个带有 DateTime 列的表,该列包含一个 UTC 中的 DateTime,在本地时间始终是时间 00:00:00.000,这是因为我只关心日期部分,而不是时间,但我需要存储UTC 日期。在我的本地时间中,UTC 偏移量是 -6 小时,因此,我所有的日期都以等于 6 的时间存储,例如 '2017-01-03 06:00:00.000' 。问题是当我尝试比较这个时:

SELECT (CASE WHEN (CONVERT(DATE, '2017-01-03 06:00:00.000') = CONVERT(DATE, GETUTCDATE())) THEN 1 ELSE 0 END) AS [IsEqual] 

如果GETUTCDATE的结果是另一天但小时小于6,例如'2017-01-04 02:00:00.000',这个日期在当地时间仍然属于1月3日,但是上面的比较返回 false 因为正在检查 2017-01-03 = 2017-01-04。

如何查找这两个 UTC 日期是否在同一日历日?

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    如果您的本地时间始终与 UTC 相差 6 小时(意味着没有夏令时),您应该从 GETUTCDATE() 中减去 6 小时,然后与您的本地时间进行比较:

    SELECT CASE WHEN 
                    CONVERT(DATE, '2017-01-03 06:00:00.000') = 
                    CONVERT(DATE, DATEADD(HOUR, -6, GETUTCDATE())) THEN 
               1 
           ELSE 
               0 
           END AS [IsEqual]
    

    【讨论】:

      猜你喜欢
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-26
      • 2013-04-11
      • 2013-04-01
      • 1970-01-01
      • 2010-09-06
      相关资源
      最近更新 更多