sql >> Databasteknik >  >> RDS >> Sqlserver

SYSDATETIME() vs GETDATE() i SQL Server:Vad är skillnaden?

SQL Server har ett gäng funktioner som returnerar aktuellt datum/tid. Två av dessa är GETDATE() och SYSDATETIME() funktioner.

Vid första anblicken verkar dessa två funktioner göra samma sak – hämta aktuellt datum och tid från operativsystemet på datorn där instansen av SQL Server körs.

Det finns dock en subtil skillnad mellan de två.

Skillnaden? Typen returvärde

Den största skillnaden mellan GETDATE() och SYSDATETIME() är i returvärdetypen.

  • GETDATE() returnerar en datumtid värde.
  • SYSDATETIME() returnerar en datetime2(7) värde.

Detta betyder att SYSDATETIME() har mer bråksekundersprecision än GETDATE() .

Båda funktionerna hämtar det aktuella datumet och tiden från operativsystemet på den dator där instansen av SQL Server körs, men precisionen är annorlunda.

Exempel

Här är ett exempel för att visa de olika värdena som returneras för varje 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ämnts, SYSDATETIME() , som returnerar en datetime2(7) värde, har en större precision än  GETDATE() , som returnerar en datumtid värde.

datetime2 datatypen har också ett större datumintervall och valfri användarspecificerad precision.

Vilken ska jag använda?

Microsoft rekommenderar att vi använder datetime2 med våra datum/tidsvärden. Denna datatyp överensstämmer med SQL-standarden och är mer portabel än datetime .

Använd därför SYSDATETIME() såvida du inte har anledning att göra det.


  1. Datatyp matchar inte (kod 20) vid infogning

  2. JDBC ResultSet:Jag behöver en getDateTime, men det finns bara getDate och getTimeStamp

  3. En datamodell för handel med aktier, fonder och kryptovalutor

  4. Hur man hittar alla anslutna subgrafer i en oriktad graf