sql >> Database teknologi >  >> RDS >> Database

Sådan får du den aktuelle dato og tid (uden tidszone) i T-SQL

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

  1. PostgreSQL returnerer resultatet sat som JSON-array?

  2. Sikkerhedskopier/gendan en dockeriseret PostgreSQL-database

  3. node-mysql flere udsagn i én forespørgsel

  4. Sådan tilføjer du rangordnede positioner af rækker i SQL med RANK()