GETDATE (Transact-SQL)GETDATE (Transact-SQL)

Se aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) SíAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database SíInstancia administrada de Azure SQLAzure SQL Managed InstanceYesInstancia administrada de Azure SQLAzure SQL Managed Instance síAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics síAlmacenamiento de datos paralelosParallel Data WarehouseyesAlmacenamiento de datos paralelosParallel Data WarehouseSe aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) SíAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database SíInstancia administrada de Azure SQLAzure SQL Managed InstanceYesInstancia administrada de Azure SQLAzure SQL Managed Instance síAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics síAlmacenamiento de datos paralelosParallel Data WarehouseyesAlmacenamiento de datos paralelosParallel Data Warehouse

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.Returns the current database system timestamp as a datetime value without the database time zone offset. Este valor se deriva del sistema operativo del equipo donde la instancia de SQL ServerSQL Server se está ejecutando.This value is derived from the operating system of the computer on which the instance of SQL ServerSQL Server is running.

Nota

SYSDATETIME y SYSUTCDATETIME tienen más precisión de fracciones de segundo que GETDATE y GETUTCDATE.SYSDATETIME and SYSUTCDATETIME have more fractional seconds precision than GETDATE and GETUTCDATE. SYSDATETIMEOFFSET incluye el ajuste de zona horaria del sistema.SYSDATETIMEOFFSET includes the system time zone offset. SYSDATETIME, SYSUTCDATETIME y SYSDATETIMEOFFSET pueden asignarse a una variable de cualquier tipo de fecha y hora.SYSDATETIME, SYSUTCDATETIME, and SYSDATETIMEOFFSET can be assigned to a variable of any of the date and time types.

Azure SQL Database (con la excepción de Azure SQL Managed Instance) y Azure Synapse Analytics siguen UTC.Azure SQL Database (with the exception of Azure SQL Managed Instance) and Azure Synapse Analytics follow 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.Use AT TIME ZONE in Azure SQL Database or Azure Synapse Analytics if you need to interpret date and time information in a non-UTC time zone.

Para ver información general sobre todos los tipos de datos y funciones de fecha y hora de Transact-SQLTransact-SQL, vea Tipos de datos y funciones de fecha y hora (Transact-SQL).For an overview of all Transact-SQLTransact-SQL date and time data types and functions, see Date and Time Data Types and Functions (Transact-SQL).

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

GETDATE()

Tipo de valor devueltoReturn Type

datetimedatetime

ObservacionesRemarks

Las instrucciones Transact-SQLTransact-SQL pueden hacer referencia a GETDATE desde cualquier parte desde donde puedan hacer referencia a una expresión datetime.Transact-SQLTransact-SQL statements can refer to GETDATE anywhere they can refer to a datetime expression.

GETDATE es una función no determinista.GETDATE is a nondeterministic function. Las vistas y las expresiones que hacen referencia a esta función en una columna no se pueden indizar.Views and expressions that reference this function in a column cannot be indexed.

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.Using SWITCHOFFSET with the function GETDATE() can cause the query to run slowly because the query optimizer is unable to obtain accurate cardinality estimates for the GETDATE value. Se recomienda calcular previamente el valor de GETDATE y especificar después ese valor en la consulta como se muestra en el ejemplo siguiente.We recommend that you precompute the GETDATE value and then specify that value in the query as shown in the following example. 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.In addition, use the OPTION (RECOMPILE) query hint to force the query optimizer to recompile a query plan the next time the same query is executed. Entonces, el optimizador tendrá estimaciones de cardinalidad precisas para GETDATE() y producirá un plan de consulta más eficaz.The optimizer will then have accurate cardinality estimates for GETDATE() and will produce a more efficient query plan.

DECLARE @dt datetimeoffset = switchoffset (CONVERT(datetimeoffset, GETDATE()), '-04:00');
SELECT * FROM t
WHERE c1 > @dt OPTION (RECOMPILE);

EjemplosExamples

En los ejemplos siguientes se usan las seis funciones del sistema de SQL ServerSQL Server que devuelven la fecha y hora actuales para devolver la fecha, la hora o ambas.The following examples use the six SQL ServerSQL Server system functions that return current date and time to return the date, time, or both. Los valores se devuelven en serie; por consiguiente, sus fracciones de segundo podrían ser diferentes.The values are returned in series; therefore, their fractional seconds might be different.

A.A. Obtener la fecha y hora actuales del sistemaGetting the current system date and time

SELECT SYSDATETIME()
    ,SYSDATETIMEOFFSET()
    ,SYSUTCDATETIME()
    ,CURRENT_TIMESTAMP
    ,GETDATE()
    ,GETUTCDATE();

El conjunto de resultados es el siguiente:Here is the result set.

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.B. Obtener la fecha actual del sistemaGetting the current system date

SELECT CONVERT (date, SYSDATETIME())
    ,CONVERT (date, SYSDATETIMEOFFSET())
    ,CONVERT (date, SYSUTCDATETIME())
    ,CONVERT (date, CURRENT_TIMESTAMP)
    ,CONVERT (date, GETDATE())
    ,CONVERT (date, GETUTCDATE());

El conjunto de resultados es el siguiente:Here is the result set.

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.C. Obtener la hora actual del sistemaGetting the current system time

SELECT CONVERT (time, SYSDATETIME())
    ,CONVERT (time, SYSDATETIMEOFFSET())
    ,CONVERT (time, SYSUTCDATETIME())
    ,CONVERT (time, CURRENT_TIMESTAMP)
    ,CONVERT (time, GETDATE())
    ,CONVERT (time, GETUTCDATE());

El conjunto de resultados es el siguiente:Here is the result set.

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 AnalyticsAzure Synapse Analytics y Almacenamiento de datos paralelosParallel Data WarehouseExamples: Azure Synapse AnalyticsAzure Synapse Analytics and Almacenamiento de datos paralelosParallel Data Warehouse

En estos ejemplos se usan las tres funciones del sistema SQL ServerSQL Server que devuelven la fecha y hora actuales para devolver la fecha, la hora o ambas.The following examples use the three SQL ServerSQL Server system functions that return current date and time to return the date, time, or both. Los valores se devuelven en serie; por consiguiente, sus fracciones de segundo podrían ser diferentes.The values are returned in series; therefore, their fractional seconds might be different.

D.D. Obtener la fecha y hora actuales del sistemaGetting the current system date and time

SELECT SYSDATETIME()
    ,CURRENT_TIMESTAMP
    ,GETDATE();

E.E. Obtener la fecha actual del sistemaGetting the current system date

SELECT CONVERT (date, SYSDATETIME())
    ,CONVERT (date, CURRENT_TIMESTAMP)
    ,CONVERT (date, GETDATE());

F.F. Obtener la hora actual del sistemaGetting the current system time

SELECT CONVERT (time, SYSDATETIME())
    ,CONVERT (time, CURRENT_TIMESTAMP)
    ,CONVERT (time, GETDATE());

Consulte tambiénSee Also

CAST y CONVERT (Transact-SQL)CAST and CONVERT (Transact-SQL)