Я столкнулся с базой данных SQL Server, которая содержит много значений DateTime
, хранящихся в локальное время. (Да, это несчастливо!) У нас есть, возможно, 5-10 лет данных, а это означает, что смещение UTC для этого местоположения будет меняться в зависимости от времени года, если данный регион соблюдает летнее время, и, разумеется, график на котором произошло это изменение, также может измениться, как, например, в Соединенных Штатах (где большая часть этих данных возникает) в 2007 году.
Моя цель состоит в том, чтобы преобразовать эти DateTime
в UTC время на уровне SQL. Заканчивая загрузку всей Olson или TZ Database и запрашивая ее, есть ли у кого-нибудь метод преобразования исторической временной метки времени в UTC? [Если это помогает, удобно, у нас также есть широта и долгота для каждой строки (может использоваться для определения часового пояса.]
Примечание: для строки, записанной в реальном времени, трюк DATEDIFF(Hour, Getutcdate(), GETDATE()) AS UtcOffset
работает отлично, конечно. Проблема заключается в применении этого ретроактивно к датам, которые произошли по обе стороны от "барьера" на летнее время.