GETDATE (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Punto de conexión de análisis SQL en Microsoft Fabric Almacenamiento en Microsoft Fabric
Devuelve la marca de tiempo del sistema de base de datos actual como un valor datetime sin el desplazamiento de zona horaria de la base de datos. Este valor se deriva del sistema operativo del equipo donde la instancia de SQL Server se está ejecutando.
Nota
SYSDATETIME y SYSUTCDATETIME tienen más precisión de fracciones de segundo que GETDATE y GETUTCDATE. SYSDATETIMEOFFSET incluye el ajuste de zona horaria del sistema. SYSDATETIME, SYSUTCDATETIME y SYSDATETIMEOFFSET pueden asignarse a una variable de cualquier tipo de fecha y hora.
Azure SQL Database (con la excepción de Azure SQL Managed Instance) y Azure Synapse Analytics siguen UTC. Use el valor AT TIME ZONE en Azure SQL Database o Azure Synapse Analytics si necesita interpretar la información de fecha y hora en una zona horaria distinta de UTC.
Para una introducción acerca de todos los tipos de datos y funciones de fecha y hora de Transact-SQL, vea Funciones de fecha y hora (Transact-SQL).
Convenciones de sintaxis de Transact-SQL
Sintaxis
GETDATE()
Tipo de valor devuelto
datetime
Observaciones
Las instrucciones Transact-SQL pueden hacer referencia a GETDATE desde cualquier parte desde donde puedan hacer referencia a una expresión datetime.
GETDATE es una función no determinista. Las vistas y las expresiones que hacen referencia a esta función en una columna no se pueden indizar.
El uso de SWITCHOFFSET con la función GETDATE() puede hacer que la consulta se ejecute despacio porque el optimizador de consultas no puede obtener estimaciones de cardinalidad precisas para el valor de GETDATE. Se recomienda calcular previamente el valor de GETDATE y especificar después ese valor en la consulta como se muestra en el ejemplo siguiente. Además, use la sugerencia de consulta OPTION (RECOMPILE) para forzar que el optimizador de consultas recompile un plan de consulta la próxima vez que se ejecute la misma consulta. Entonces, el optimizador tendrá estimaciones de cardinalidad precisas para GETDATE() y producirá un plan de consulta más eficaz.
DECLARE @dt datetimeoffset = switchoffset (CONVERT(datetimeoffset, GETDATE()), '-04:00');
SELECT * FROM t
WHERE c1 > @dt OPTION (RECOMPILE);
Ejemplos
En los ejemplos siguientes se usan las seis funciones del sistema de SQL Server que devuelven la fecha y hora actuales para devolver la fecha, la hora o ambas. Los valores se devuelven en serie; por consiguiente, sus fracciones de segundo podrían ser diferentes.
A. Obtener la fecha y hora actuales del sistema
SELECT SYSDATETIME()
,SYSDATETIMEOFFSET()
,SYSUTCDATETIME()
,CURRENT_TIMESTAMP
,GETDATE()
,GETUTCDATE();
Este es el conjunto de resultados.
SYSDATETIME() 2007-04-30 13:10:02.0474381
SYSDATETIMEOFFSET()2007-04-30 13:10:02.0474381 -07:00
SYSUTCDATETIME() 2007-04-30 20:10:02.0474381
CURRENT_TIMESTAMP 2007-04-30 13:10:02.047
GETDATE() 2007-04-30 13:10:02.047
GETUTCDATE() 2007-04-30 20:10:02.047
B. Obtener la fecha actual del sistema
SELECT CONVERT (date, SYSDATETIME())
,CONVERT (date, SYSDATETIMEOFFSET())
,CONVERT (date, SYSUTCDATETIME())
,CONVERT (date, CURRENT_TIMESTAMP)
,CONVERT (date, GETDATE())
,CONVERT (date, GETUTCDATE());
Este es el conjunto de resultados.
SYSDATETIME() 2007-05-03
SYSDATETIMEOFFSET() 2007-05-03
SYSUTCDATETIME() 2007-05-04
CURRENT_TIMESTAMP 2007-05-03
GETDATE() 2007-05-03
GETUTCDATE() 2007-05-04
C. Obtener la hora actual del sistema
SELECT CONVERT (time, SYSDATETIME())
,CONVERT (time, SYSDATETIMEOFFSET())
,CONVERT (time, SYSUTCDATETIME())
,CONVERT (time, CURRENT_TIMESTAMP)
,CONVERT (time, GETDATE())
,CONVERT (time, GETUTCDATE());
Este es el conjunto de resultados.
SYSDATETIME() 13:18:45.3490361
SYSDATETIMEOFFSET() 13:18:45.3490361
SYSUTCDATETIME() 20:18:45.3490361
CURRENT_TIMESTAMP 13:18:45.3470000
GETDATE() 13:18:45.3470000
GETUTCDATE() 20:18:45.3470000
Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)
En estos ejemplos se usan las tres funciones del sistema SQL Server que devuelven la fecha y hora actuales para devolver la fecha, la hora o ambas. Los valores se devuelven en serie; por consiguiente, sus fracciones de segundo podrían ser diferentes.
D. Obtener la fecha y hora actuales del sistema
SELECT SYSDATETIME()
,CURRENT_TIMESTAMP
,GETDATE();
E. Obtener la fecha actual del sistema
SELECT CONVERT (date, SYSDATETIME())
,CONVERT (date, CURRENT_TIMESTAMP)
,CONVERT (date, GETDATE());
F. Obtener la hora actual del sistema
SELECT CONVERT (time, SYSDATETIME())
,CONVERT (time, CURRENT_TIMESTAMP)
,CONVERT (time, GETDATE());