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

SYSDATETIME() vs GETDATE() i SQL Server:Hvad er forskellen?

SQL Server har en masse funktioner, der returnerer den aktuelle dato/tid. To af disse er GETDATE() og SYSDATETIME() funktioner.

Ved første øjekast ser disse to funktioner ud til at gøre det samme – få den aktuelle dato og klokkeslæt fra operativsystemet på den computer, som forekomsten af ​​SQL Server kører på.

Der er dog en subtil forskel mellem de to.

Forskellen? Returværditypen

Den største forskel mellem GETDATE() og SYSDATETIME() er i returværditypen.

  • GETDATE() returnerer en datotid værdi.
  • SYSDATETIME() returnerer en datetime2(7) værdi.

Det betyder, at SYSDATETIME() har mere brøksekunders præcision end GETDATE() .

Begge funktioner henter den aktuelle dato og det aktuelle klokkeslæt fra operativsystemet på den computer, som forekomsten af ​​SQL Server kører på, men brøkpræcisionen er anderledes.

Eksempel

Her er et eksempel for at demonstrere de forskellige værdier, der returneres for hver funktion:

SELECT 
    GETDATE() AS GETDATE,
    SYSDATETIME() AS SYSDATETIME;

Resultat:

+-------------------------+-----------------------------+
| GETDATE                 | SYSDATETIME                 |
|-------------------------+-----------------------------|
| 2018-06-13 02:48:27.653 | 2018-06-13 02:48:27.6542371 |
+-------------------------+-----------------------------+

Så som nævnt, SYSDATETIME() , som returnerer en datetime2(7) værdi, har en større brøkpræcision end  GETDATE() , som returnerer en datotid værdi.

datetime2 datatypen har også et større datointerval og valgfri brugerspecificeret præcision.

Hvilken skal jeg bruge?

Microsoft anbefaler, at vi bruger datetime2 med vores dato/tidsværdier. Denne datatype stemmer overens med SQL-standarden og er mere bærbar end datetime .

Brug derfor SYSDATETIME() medmindre du har grund til ikke at gøre det.


  1. Hvordan opretter man et bord med to eller flere fremmednøgler ved hjælp af Android Room?

  2. Find alle ikke-numeriske værdier i en kolonne i MariaDB

  3. SqlConnection SqlCommand SqlDataReader IDdisposable

  4. Tilpasset rækkefølge i Oracle SQL