Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como converter fusos horários no SQL Server 2005?


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.