2010-07-22 26 views
5

¿Cómo se puede comparar la hora de la India con otros países del mundo en SQL Server 2008?Comparación de tiempo en SQL Server 2008

Medios Quiero saber si en la India su mediados de la noche 1 am ¿será el tiempo en otros países a través de SQL Server 2008

+0

¿Puede dar un contexto de cómo va a utilizar y/o acceder a esta información? ¿Le interesan las diferencias de zona horaria entre múltiples servidores SQL, o simplemente una forma de buscar una compensación de tiempo para una ubicación geográfica? –

Respuesta

0
DECLARE @indianTime DATETIME = GETDATE() 
DECLARE @timeZoneOffset SMALLINT = 3 -- or -3 

SELECT DATEADD(hour, @timeZoneOffset, @indianTime) 

Ver próximos artículos de MSDN: 1, 2


Pero es mejor usar SQL Server 2008 y DateTimeOffset tipo que admite zonas horarias.

Por lo que podría hacer a continuación:

DECLARE @indianTime DATETIME = SYSDATETIMEOFFSET() 
DECLARE @timeZoneOffset NVARCHAR(6) = '-03:00' 

SELECT SWITCHOFFSET(@indianTime, @timeZoneOffset) 
2

Tenga una mirada en SYSUTCDATETIME():

SELECT SYSDATETIME(), SYSUTCDATETIME(); 

Con tiempo UTC se puede calcular fácilmente el tiempo en cualquier otro país.

2

SQL Server 2008 utiliza el tipo DateTimeOffset para representar DateTime con un desplazamiento de zona horaria.

Puede convertir valores de una zona horaria a otra utilizando la función SWITCHOFFSET.

Para crear valores DateTimeOffset para una zona horaria específica a partir de valores de fecha existentes, use TODATETIMEOFFSET.

Puede obtener la fecha y hora actuales, incluida la compensación, usando SYSDATETIMEOFFSET.

Finalmente, puede usar el antiguo DATEDIFF para comparar los valores de DateTimeOffset y obtener su diferencia.

Para obtener su hora actual en India y cambiarla a otra zona horaria, debe conocer el desfase horario adecuado. La declaración sería algo así como

DECLARE @localTime DATETIMEOFFSET=SYSDATETIMEOFFSET() 
SELECT @localTime, SWITCHOFFSET(@localTime,'-5:00')