2010-07-22 8 views
5

Wie vergleicht man in SQL Server 2008 die indische Zeit mit anderen Ländern der Welt?Timing vergleichen in SQL Server 2008

bedeutet, ich möchte wissen, ob in Indien seine Mitte Nacht 01.00, was in anderen Ländern durch SQL Server 2008 Timing wird

+0

Können Sie einen Zusammenhang dafür geben, wie Sie diese Informationen verwenden und/oder auf sie zugreifen werden? Sind Sie an Zeitzonenunterschieden zwischen mehreren SQL-Servern interessiert oder suchen Sie einfach nach einem Zeitversatz für einen geografischen Standort? –

Antwort

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

SELECT DATEADD(hour, @timeZoneOffset, @indianTime) 

nächsten MSDN-Artikeln: 1, 2


Aber es ist besser, SQL Server 2008 und Typ zu verwenden, der Zeitzonen unterstützt.

So könnte man als nächstes tun:

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

SELECT SWITCHOFFSET(@indianTime, @timeZoneOffset) 
2

Werfen Sie einen Blick auf SYSUTCDATETIME():

SELECT SYSDATETIME(), SYSUTCDATETIME(); 

mit UTC-Zeit Sie die Zeit in einem anderen Land leicht berechnen kann.

2

SQL Server 2008 verwendet den Typ DateTimeOffset, um DateTime mit einem Zeitzonenoffset darzustellen.

Mit der Funktion SWITCHOFFSET können Sie Werte von einer Zeitzone in eine andere konvertieren.

Um DateTimeOffset-Werte für eine bestimmte Zeitzone aus vorhandenen Datumswerten zu erstellen, verwenden Sie TODATETIMEOFFSET.

Sie können das aktuelle Datum und die aktuelle Uhrzeit einschließlich Offset mit SYSDATETIMEOFFSET abrufen.

Schließlich können Sie plain-alte DATEDIFF verwenden, um DateTimeOffset-Werte zu vergleichen und ihre Differenz zu erhalten.

Um Ihre aktuelle Zeit in Indien zu erfahren und in eine andere Zeitzone zu wechseln, müssen Sie den richtigen Zeitversatz kennen. Die Aussage wäre etwas wie

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