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

SYSUTCDATETIME() vs GETUTCDATE() in SQL Server:qual è la differenza?

SYSUTCDATETIME()GETUTCDATE() sono due funzioni di data/ora T-SQL disponibili per l'uso in SQL Server. Queste funzioni restituiscono la data e l'ora del computer in cui è in esecuzione l'istanza di SQL Server. Entrambe le funzioni restituiscono la data e l'ora come ora UTC (Coordinated Universal Time).

Quindi, entrambe le funzioni fanno la stessa cosa. Quasi.

Ecco come differiscono queste due funzioni:

  • GETUTCDATE() restituisce il suo valore come datetime valore.
  • SYSUTCDATETIME() restituisce il suo valore come datetime2 valore.

Ciò significa che SYSUTCDATETIME() fornisce più secondi di precisione. La dataora2 il tipo di dati ha anche un intervallo più ampio di datetime .

Esempio

Ecco un esempio per dimostrare il valore restituito da ciascuna funzione:

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

Risultato:

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

Quindi questo è simile alla differenza tra SYSDATETIME() e GETDATE() .

Quale dovrei usare?

Microsoft consiglia di utilizzare datetime2 con i nostri valori di data/ora. Questo tipo di dati è in linea con lo standard SQL ed è più portabile di datetime .

Pertanto, usa SYSUTCDATETIME() a meno che tu non abbia un motivo specifico per non farlo.