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