sql >> Base de Datos >  >> RDS >> Sqlserver

SYSUTCDATETIME() vs GETUTCDATE() en SQL Server:¿Cuál es la diferencia?

SYSUTCDATETIME()GETUTCDATE() Hay dos funciones de fecha/hora de T-SQL disponibles para su uso en SQL Server. Estas funciones devuelven la fecha y la hora del equipo en el que se ejecuta la instancia de SQL Server. Ambas funciones devuelven la fecha y la hora como hora UTC (hora universal coordinada).

Entonces, ambas funciones hacen lo mismo. Casi.

Así es como difieren estas dos funciones:

  • GETUTCDATE() devuelve su valor como datetime valor.
  • SYSUTCDATETIME() devuelve su valor como datetime2 valor.

Esto significa que SYSUTCDATETIME() proporciona más segundos de precisión. La fechahora2 el tipo de datos también tiene un rango mayor que datetime .

Ejemplo

Aquí hay un ejemplo para demostrar el valor devuelto por cada función:

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

Resultado:

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

Así que esto es similar a la diferencia entre SYSDATETIME() y GETDATE() .

¿Cuál debo usar?

Microsoft recomienda que usemos datetime2 con nuestros valores de fecha/hora. Este tipo de datos se alinea con el estándar SQL y es más portátil que datetime .

Por lo tanto, use SYSUTCDATETIME() a menos que tenga una razón específica para no hacerlo.