我有一个带有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?
答案 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]