2017-01-04 2 views
0

У меня есть таблица с столбцом DateTime, этот столбец содержит DateTime в UTC, который по местному времени всегда равен 00: 00: 00.000, это потому, что я только забочусь о дате, а не о времени, но мне нужно сохранить дату в UTC. В мое местное время смещение UTC составляет -6 часов, поэтому все мои даты хранятся с временем, равным 6, например, «2017-01 -03 06: 00: 00.000 '. Проблема заключается в том, что, когда я пытаюсь сравнить это:SQL Найти, если два дня UTC находятся в одном календаре

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», эта дата по местному времени все еще принадлежит 3 января, но приведенное выше сравнение возвращает false, потому что проверяет, будет ли 2017-01-03 = 2017-01-04.

Как я могу найти идентификатор этих двух дат UTC в один и тот же день календаря?

ответ

2

Если ваше местное время всегда 6 часов от UTC (имеется в виду не летнее время), вы должны вычесть 6 часов из GETUTCDATE(), а затем сравнить с местным временем:

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] 
+0

Довольно очевидный человек, спасибо много !! –

Смежные вопросы