I SQL Server, transact-sql SYSDATETIMEOFFSET()
funktion returnerar en datetimeoffset(7) värde som innehåller datum och tid för den dator där instansen av SQL Server körs. Detta värde inkluderar tidszonförskjutningen.
Exempel på användning nedan.
Syntax
Syntaxen ser ut så här:
SYSDATETIMEOFFSET ( )
Så du anropar helt enkelt funktionen utan några argument.
Exempel
Här är ett grundläggande exempel:
SELECT SYSDATETIMEOFFSET() AS Result;
Resultat:
Result ---------------------------------- 2018-06-17 09:55:27.3221853 +10:00
Extrahera tidszonsförskjutningen
Du kan använda DATEPART()
funktion för att returnera tidszonförskjutningen. Denna funktion returnerar ett heltal som representerar tidszonförskjutningen i minuter.
Exempel:
SELECT SYSDATETIMEOFFSET() AS 'Date/time', DATEPART(TZoffset, SYSDATETIMEOFFSET()) AS 'TZ Offset';
Resultat:
Date/time TZ Offset ---------------------------------- ----------- 2018-06-17 10:04:23.2316409 +10:00 600
Du kan också använda FORMAT()-funktionen för att returnera tidszonförskjutningen som en sträng. Specifikt kan du använda z
, zz
och/eller zzz
argument för att returnera den i det format som krävs.
Exempel:
SELECT SYSDATETIMEOFFSET() AS 'Date/time', FORMAT(SYSDATETIMEOFFSET(), 'zz') AS 'zz', FORMAT(SYSDATETIMEOFFSET(), 'zzz') AS 'zzz';
Resultat:
Date/time zz zzz ---------------------------------- -------------- -------------- 2018-06-17 10:27:33.7314840 +10:00 +10 +10:00
Konvertera returvärdet
Du kan också använda funktioner som CONVERT()
för att konvertera returvärdet till en annan datatyp. Här är ett exempel där jag konverterar det till ett datum värde och en tid värde:
SELECT CONVERT (date, SYSDATETIMEOFFSET()) AS 'Date', CONVERT (time, SYSDATETIMEOFFSET()) AS 'Time';
Resultat:
Date Time ---------- ---------------- 2018-06-17 10:08:29.6377947
När vi väl gör det tappar vi naturligtvis tidszonsförskjutningen.
Se även TODATETIMEOFFSET()
vilket gör att du kan få en datumtidsförskjutning värde från en datetime2 uttryck och SWITCHOFFSET()
som låter dig ändra en tidszonförskjutning.