Преобразование даты в формате UTC в стандартное время CST или EST (например) является прямым. Мы должны хранить значение смещения в отдельном столбце или таблице для каждого часового пояса, который нам нужен в нашем приложении.
Например: от UTC до CST -6 часов. Аналогично, UTC для EST составляет -5 часов.
DECLARE @UTC_Date DATETIME
SET @UTC_Date = GETUTCDATE()
SELECT
@UTC_Date AS [UTC],
DATEADD(hh, -6, @UTC_Date) AS [CST - Standard Time],
DATEADD(hh, -5, @UTC_Date) AS [EST - Standard Time]
Все становится сложнее, когда мы вводим в расчет переход на летнее время. Но если указанная дата попадает под летнее время, приведенный выше расчет не сработает.
Как рассчитывается переход на летнее время?
Если год <= 2006, то переход на летнее время составляет:
2 часа ночи в первое воскресенье апреля до 2 часов ночи в последнее воскресенье октября </p>
Если год> = 2007, то переход на летнее время составляет:
2 часа ночи во второе воскресенье марта до 2 часов ночи в первое воскресенье ноября
UTC до CST (стандартное время) = -6
UTC к CDT (дневное время) = -5
UTC до EST (стандартное время) = -5
- UTC до EDT (дневное время) = -4
Проверьте решение для перехода на летнее время здесь - http://vadivel.blogspot.com/2011/10/timezone-conversion-utc-to-cst-with.html