SQL查找两个UTC日期是否在同一日历日

时间:2017-01-04 08:24:01

标签: sql sql-server

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

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日期在同一日历日的ID?

1 个答案:

答案 0 :(得分:2)

如果您的当地时间始终是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]