Problem:
Du vil gerne have den aktuelle dato og klokkeslæt i T-SQL, men du vil ikke have tidszonen forskudt.
Løsning:
Vi bruger GETDATE(), CURRENT_TIMESTAMP og SYSDATETIME() til at få den aktuelle dato og tid uden tidszoneforskydning. De to første funktioner giver os mulighed for at få den aktuelle tid med en lavere præcision. (GETDATE() er en T-SQL-funktion, mens CURRENT_TIMESTAMP er en SQL Standard-funktion; begge funktioner returnerer den samme datatype). Den tredje funktion, SYSDATETIME(), får en tid med højere præcision.
SELECT CURRENT_TIMESTAMP ;
Her er resultatet af forespørgslen:
2019-08-14 10:01:06.983
Diskussion:
I en SQL Server-database er CURRENT_TIMESTAMP
funktion returnerer den aktuelle dato og det aktuelle klokkeslæt (dvs. klokkeslættet på den maskine, hvor den SQL Server-instans kører) som en datetime
datatype. Datetime
er en tid med lavere præcision, der maksimalt har tre brøksekunder. (I vores eksempel er dette 983.)
GETDATE() ligner CURRENT_TIMESTAMP
og returnerer det samme resultat. Forskellen er, at CURRENT_TIMESTAMP
er SQL-standard, mens GETDATE() er specifik for SQL Server.
SELECT GETDATE() ;
Hvis du ønsker at få en aktuel dato og klokkeslæt med højere præcision uden en tidszoneforskydning, kan du selvfølgelig bruge SYSDATETIME()-funktionen. Denne funktion returnerer en datetime2
datatype med syv brøksekunder. Se eksemplet nedenfor:
SELECT SYSDATETIME() ;
Her er resultatet:
2019-08-14 10:01:06.9754163