Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

SYSUTCDATETIME() vs GETUTCDATE() no SQL Server:Qual é a diferença?


SYSUTCDATETIME()GETUTCDATE() são duas funções de data/hora T-SQL disponíveis para uso no SQL Server. Essas funções retornam a data e a hora do computador no qual a instância do SQL Server está sendo executada. Ambas as funções retornam a data e a hora como hora UTC (Coordinated Universal Time).

Então, ambas as funções fazem a mesma coisa. Quase.

Veja como essas duas funções diferem:
  • GETUTCDATE() retorna seu valor como um datetime valor.
  • SYSUTCDATETIME() retorna seu valor como um datetime2 valor.

Isso significa que SYSUTCDATETIME() fornece mais precisão de segundos. O datetime2 tipo de dados também tem um intervalo maior que datetime .


Exemplo


Aqui está um exemplo para demonstrar o valor retornado por cada função:
SELECT 
    GETUTCDATE() AS GETUTCDATE,
    SYSUTCDATETIME() AS SYSUTCDATETIME;

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

Portanto, isso é semelhante à diferença entre SYSDATETIME() e GETDATE() .

Qual ​​devo usar?


A Microsoft recomenda que usemos datetime2 com nossos valores de data/hora. Esse tipo de dados está alinhado com o padrão SQL e é mais portátil que datetime .

Portanto, use SYSUTCDATETIME() a menos que você tenha um motivo específico para não fazê-lo.