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

SQL查找两个UTC日期是否在同一日历日,sql,sql-server,Sql,Sql Server,我有一个带有DateTime列的表,该列包含UTC中的DateTime,在本地时间中始终是time 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') = CONVER

我有一个带有DateTime列的表,该列包含UTC中的DateTime,在本地时间中始终是time 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


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

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

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