Como o SQL Server não fornece suporte pronto para isso, você pode considerar escrever um procedimento armazenado .Net dll, que use o .Net TimeZoneInfo objeto , esse objeto leva em consideração todas as regras, incluindo o horário de verão. Esta classe permite converter o tempo de uma zona para outra também. Eu espero que isso ajude.
DateTime hwTime = new DateTime(2007, 02, 01, 08, 00, 00);
try
{
TimeZoneInfo hwZone = TimeZoneInfo.FindSystemTimeZoneById("Hawaiian Standard Time");
Console.WriteLine("{0} {1} is {2} local time.",
hwTime,
hwZone.IsDaylightSavingTime(hwTime) ? hwZone.DaylightName : hwZone.StandardName,
TimeZoneInfo.ConvertTime(hwTime, hwZone, TimeZoneInfo.Local));
}
catch (TimeZoneNotFoundException)
{
Console.WriteLine("The registry does not define the Hawaiian Standard Time zone.");
}
catch (InvalidTimeZoneException)
{
Console.WriteLine("Registry data on the Hawaiian STandard Time zone has been corrupted.");
}
[Editar]
Tutorial de criação simples Procedimento armazenado .Net DLL.
Outro tutorial útil, tem mais detalhes sobre a implantação.