sql >> Base de Datos >  >> RDS >> Database

Cómo obtener la fecha y hora actuales (sin zona horaria) en T-SQL

Problema:

Le gustaría obtener la fecha y la hora actuales en T-SQL, pero no quiere la compensación de la zona horaria.

Solución:

Usaremos GETDATE(), CURRENT_TIMESTAMP y SYSDATETIME() para obtener la fecha y la hora actuales sin el desplazamiento de la zona horaria. Las dos primeras funciones nos permiten obtener la hora actual con menor precisión. (GETDATE() es una función T-SQL, mientras que CURRENT_TIMESTAMP es una función estándar de SQL; ambas funciones devuelven el mismo tipo de datos). La tercera función, SYSDATETIME(), obtiene una hora de mayor precisión.

SELECT CURRENT_TIMESTAMP ;

Este es el resultado de la consulta:

2019-08-14 10:01:06.983

Discusión:

En una base de datos de SQL Server, el CURRENT_TIMESTAMP La función devuelve la fecha y la hora actuales (es decir, la hora en la máquina donde se ejecuta la instancia de SQL Server) como datetime tipo de datos. Datetime es un tiempo de menor precisión que tiene un máximo de tres segundos fraccionarios. (En nuestro ejemplo, esto es 983.)

GETDATE() es similar a CURRENT_TIMESTAMP y devuelve el mismo resultado. La diferencia es que CURRENT_TIMESTAMP es el estándar de SQL, mientras que GETDATE() es específico de SQL Server.

SELECT GETDATE() ;

Por supuesto, si desea obtener una fecha y hora actuales de mayor precisión sin una compensación de zona horaria, puede usar la función SYSDATETIME(). Esta función devuelve un datetime2 tipo de datos con siete segundos fraccionarios. Mira el siguiente ejemplo:

SELECT SYSDATETIME() ;

Aquí está el resultado:

2019-08-14 10:01:06.9754163