I SQL Server, TODATETIMEOFFSET()
funktion designades specifikt för att returnera en datumtidsförskjutning värde från en datetime2 värde.
Med tanke på det faktum att datetime2 datatypen stöder faktiskt inte tidszonförskjutningar och datetimeoffset måste innehålla offset, TODATETIMEOFFSET()
funktionen låter dig ange en tidszonförskjutning som ska användas.
Den här artikeln ger några exempel att visa.
Grundläggande användning
Här är ett exempel på typisk användning av TODATETIMEOFFSET()
fungera.
DECLARE @dt datetime2 = '2020-12-20 17:33:59.8900000';
SELECT
@dt AS [datetime2],
TODATETIMEOFFSET(@dt, '+07:00') AS [datetimeoffset];
Resultat (med vertikal utdata):
datetime2 | 2020-12-20 17:33:59.8900000 datetimeoffset | 2020-12-20 17:33:59.8900000 +07:00
I det här fallet returnerar jag originalet datetime2 värde och den resulterande datetimeoffset värde.
Resultatet är att det ursprungliga datumet/tiden är densamma, förutom att den angivna tidszonsförskjutningen har lagts till.
Intervallet är +14 till -14 (i timmar). Uttrycket tolkas i lokal tid för den angivna tidszonen.
Ange tidszonsförskjutningen i minuter
Du kan alternativt ange tidszonsförskjutningen i minuter. Här är ett exempel.
DECLARE @dt datetime2 = '2020-12-20 17:33:59.8900000';
SELECT
@dt AS [datetime2],
TODATETIMEOFFSET(@dt, +120) AS [datetimeoffset];
Resultat (med vertikal utdata):
datetime2 | 2020-12-20 17:33:59.8900000 datetimeoffset | 2020-12-20 17:33:59.8900000 +02:00
I det här fallet angav jag +120 minuter, vilket är samma som två timmar. Så resultatet blev en tidszonförskjutning på +02:00 (vilket betyder plus två timmar).
Observera också att när du anger tidszonförskjutningen i minuter, anger du den som ett heltalsvärde. Å andra sidan, när du tillhandahåller det i timmar, måste du ange det som en sträng.
Se Konvertera ett datum till en annan tidszon för exempel på hur du gör detta.