Приложение моей базы данных будет развернуто на нескольких сайтах в разных часовых поясах.
Мне нужна функция T-SQL, которая будет определять временную метку UTC полуночи 1 января текущего года для расчетов с начала года. Все данные хранятся в метках времени UTC.
Например, Чикаго - это UTC-6 с летним временем (DST), функция должна возвращать '2008-01-01 06:00:00', если она будет запущена в любое время в Чикаго в 2008 году. Если запуск в Нью-Йорке (GMT-5 + DST) в следующем году, он должен вернуть '2009-01-01 05:00:00'.
Я могу получить текущий год от YEAR(GETDATE())
. Я думал, что мог бы сделать DATEDIFF
между GETDATE()
и GETUTCDATE()
, чтобы определить смещение, но результат зависит от того, выполняется ли запрос во время летнего времени или нет. Я не знаю каких-либо встроенных функций T-SQL для определения смещения или является ли текущее время летним или нет?
У кого-нибудь есть решение этой проблемы в T-SQL? Я мог бы жестко закодировать его или сохранить в таблице, но предпочел бы не делать этого. Я полагаю, что это идеальная ситуация для использования интеграции CLR в SQL Server 2005. Мне просто интересно, есть ли решение T-SQL, о котором я не знаю?