Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SYSUTCDATETIME() vs. GETUTCDATE() in SQL Server:Was ist der Unterschied?

SYSUTCDATETIME() und GETUTCDATE() sind zwei T-SQL-Datums-/Uhrzeitfunktionen, die in SQL Server verwendet werden können. Diese Funktionen geben das Datum und die Uhrzeit des Computers zurück, auf dem die Instanz von SQL Server ausgeführt wird. Beide Funktionen geben Datum und Uhrzeit als UTC-Zeit (koordinierte Weltzeit) zurück.

Beide Funktionen machen also dasselbe. Fast.

So unterscheiden sich diese beiden Funktionen:

  • GETUTCDATE() gibt seinen Wert als datetime zurück Wert.
  • SYSUTCDATETIME() gibt seinen Wert als datetime2 zurück Wert.

Dies bedeutet, dass SYSUTCDATETIME() bietet mehr Sekundenpräzision. Die datetime2 Der Datentyp hat auch einen größeren Bereich als datetime .

Beispiel

Hier ist ein Beispiel, um den von jeder Funktion zurückgegebenen Wert zu demonstrieren:

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

Ergebnis:

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

Das ist also ähnlich dem Unterschied zwischen SYSDATETIME() und GETDATE() .

Welche sollte ich verwenden?

Microsoft empfiehlt die Verwendung von datetime2 mit unseren Datums-/Uhrzeitwerten. Dieser Datentyp entspricht dem SQL-Standard und ist besser portierbar als datetime .

Verwenden Sie daher SYSUTCDATETIME() es sei denn, Sie haben einen bestimmten Grund, dies nicht zu tun.