sql >> Database >  >> RDS >> Sqlserver

SYSUTCDATETIME() versus GETUTCDATE() in SQL Server:wat is het verschil?

SYSUTCDATETIME() en GETUTCDATE() zijn twee T-SQL-datum/tijd-functies die beschikbaar zijn voor gebruik in SQL Server. Deze functies retourneren de datum en tijd van de computer waarop het exemplaar van SQL Server wordt uitgevoerd. Beide functies retourneren de datum en tijd als UTC-tijd (Coordinated Universal Time).

Beide functies doen dus hetzelfde. Bijna.

Hier is hoe deze twee functies verschillen:

  • GETUTCDATE() geeft de waarde terug als een datetime waarde.
  • SYSUTCDATETIME() geeft de waarde terug als een datetime2 waarde.

Dit betekent dat SYSUTCDATETIME() biedt meer seconden precisie. De datetime2 gegevenstype heeft ook een groter bereik dan datetime .

Voorbeeld

Hier is een voorbeeld om de waarde te demonstreren die door elke functie wordt geretourneerd:

SELECT 
    GETUTCDATE() AS GETUTCDATE,
    SYSUTCDATETIME() AS SYSUTCDATETIME;

Resultaat:

+-------------------------+-----------------------------+
| GETUTCDATE              | SYSUTCDATETIME              |
|-------------------------+-----------------------------|
| 2018-06-13 11:04:55.237 | 2018-06-13 11:04:55.2396676 |
+-------------------------+-----------------------------+

Dit is dus vergelijkbaar met het verschil tussen SYSDATETIME() en GETDATE() .

Welke moet ik gebruiken?

Microsoft raadt aan om datetime2 . te gebruiken met onze datum/tijd waarden. Dit gegevenstype komt overeen met de SQL-standaard en is beter overdraagbaar dan datetime .

Gebruik daarom SYSUTCDATETIME() tenzij je een specifieke reden hebt om dat niet te doen.


  1. Hoe u de juiste gegevenstypen selecteert

  2. Vermijd deze 4 veelvoorkomende DBA-fouten

  3. SELECT COUNT(*) AS count - Hoe deze telling te gebruiken

  4. Fouten in SQL Server tijdens het importeren van CSV-bestand ondanks dat varchar(MAX) voor elke kolom wordt gebruikt