Я столкнулся с проблемой, которую мне нужно преобразовать между разными часовыми поясами. Я нашел решение для SQL Server версии 2016 с использованием AT TIME ZONE
. Есть ли еще простое решение для SQL Server 2014?
Что-то вроде следующего было бы здорово:
SELECT CONVERT(datetime, '2018-01-01 01:00:59') -- Datetime in Alaska
AT TIME ZONE 'Central European Standard Time'; -- Datetime in Europe
И посмотрите эту ссылку - stackoverflow.com/questions/19613638/…
Это не обязательно должно быть аляска, но может быть любой часовой пояс, в котором расположен сервер. Что вы имеете в виду под названием часового пояса IANA и как его применить?
См. Дублирующий ответ для параметров в SQL 2014. Если бы это был 2016 год, вы бы использовали операторы дваAT TIME ZONE
, первая утверждала бы часовой пояс (Аляска) предоставленного значения, а вторая преобразовывала бы в желаемый часовой пояс (Европа).
Почему вы предполагаете, что исходное время находится в часовом поясе Аляски? Если вы выполняете развертывание в любой облачной среде или центре обработки данных, это, вероятно, будет UTC. Если ваши данные чувствительны к часовым поясам, используйте хотя бы
datetimeoffset
. Я также предлагаю сохранить имя часового пояса IANA. Смещения меняются из-за изменений летнего времени, а названия часовых поясов - нет.