Problem:
Du vill ha aktuellt datum och tid i T-SQL, men du vill inte att tidszonen förskjuts.
Lösning:
Vi använder GETDATE(), CURRENT_TIMESTAMP och SYSDATETIME() för att få aktuellt datum och tid utan tidszonförskjutning. De två första funktionerna gör att vi kan få aktuell tid med lägre precision. (GETDATE() är en T-SQL-funktion, medan CURRENT_TIMESTAMP är en SQL Standard-funktion; båda funktionerna returnerar samma datatyp). Den tredje funktionen, SYSDATETIME(), får en tid med högre precision.
SELECT CURRENT_TIMESTAMP ;
Här är resultatet av frågan:
2019-08-14 10:01:06.983
Diskussion:
I en SQL Server-databas, CURRENT_TIMESTAMP
funktion returnerar det aktuella datumet och tiden (dvs tiden på maskinen där den SQL Server-instansen körs) som en datetime
data typ. Datetime
är en tid med lägre precision som har högst tre bråkdelar. (I vårt exempel är detta 983.)
GETDATE() liknar CURRENT_TIMESTAMP
och ger samma resultat. Skillnaden är att CURRENT_TIMESTAMP
är SQL-standard, medan GETDATE() är specifik för SQL Server.
SELECT GETDATE() ;
Naturligtvis, om du vill få ett aktuellt datum och tid med högre precision utan tidszonförskjutning, kan du använda SYSDATETIME()-funktionen. Denna funktion returnerar en datetime2
datatyp med sju bråkdelar. Titta på exemplet nedan:
SELECT SYSDATETIME() ;
Här är resultatet:
2019-08-14 10:01:06.9754163