Tipos de datos y funciones de fecha y hora (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

En las secciones de este artículo se describen todos los tipos de datos y funciones de fecha y hora de Transact-SQL.

Tipos de datos de fecha y hora

En la tabla siguiente se muestran los tipos de datos de fecha y hora de Transact-SQL:

Tipo de datos Formato Intervalo Precisión Tamaño de almacenamiento (bytes) Precisión de fracciones de segundo definida por el usuario Ajuste de zona horaria
time hh:mm:ss[.nnnnnnn] De 00:00:00.0000000 a 23:59:59.9999999 100 nanosegundos 3 to 5 No
date YYYY-MM-DD De 0001-01-01 a 31.12.99 1 día 3 No No
smalldatetime AAAA-MM-DD hh:mm:ss De 1900-01-01 a 2079-06-06 1 minuto 4 No No
datetime AAAA-MM-DD hh:mm:ss[.nnn] De 1753-01-01 a 9999-12-31 0,00333 segundos 8 No No
datetime2 AAAA-MM-DD hh:mm:ss[.nnnnnnn] De 0001-01-01 00:00:00.0000000 a 9999-12-31 23:59:59.9999999 100 nanosegundos De 6 a 8 No
datetimeoffset AAAA-MM-DD hh:mm:ss[.nnnnnnn] [+|-]hh:mm De 0001-01-01 00:00:00.0000000 a 9999-12-31 23:59:59.9999999 (en UTC) 100 nanosegundos De 8 a 10

Nota

El tipo de datos rowversion de Transact-SQL no es un tipo de datos de fecha y hora. timestamp es un sinónimo en desuso de rowversion.

Funciones de fecha y hora

En las tablas siguientes se enumeran las funciones de fecha y hora de Transact-SQL. Para obtener más información sobre el determinismo, vea Funciones deterministas y no deterministas.

Funciones que devuelven valores de fecha y hora del sistema

Transact-SQL deriva todos los valores de fecha y hora del sistema operativo del equipo en el que se ejecuta la instancia de SQL Server.

Funciones de fecha y hora del sistema de precisión elevada

Desde SQL Server 2008 (10.0.x), el Motor de base de datos deriva los valores de fecha y hora mediante la API de Windows GetSystemTimeAsFileTime(). La exactitud depende del hardware del equipo y de la versión de Windows en la que se ejecuta la instancia de SQL Server. La precisión de esta API se fija en 100 nanosegundos. Use la API de Windows GetSystemTimeAdjustment() para determinar la precisión.

Función Sintaxis Valor devuelto Tipo de datos devuelto Determinismo
SYSDATETIME SYSDATETIME ( ) Devuelve un valor datetime2(7) que contiene la fecha y hora del equipo en el que se ejecuta la instancia de SQL Server. El valor devuelto no incluye el desplazamiento de zona horaria. datetime2(7) No determinista
SYSDATETIMEOFFSET SYSDATETIMEOFFSET ( ) Devuelve un valor datetimeoffset(7) que contiene la fecha y hora del equipo en el que se ejecuta la instancia de SQL Server. El valor devuelto incluye el desplazamiento de zona horaria. datetimeoffset(7) No determinista
SYSUTCDATETIME SYSUTCDATETIME ( ) Devuelve un valor datetime2(7) que contiene la fecha y hora del equipo en el que se ejecuta la instancia de SQL Server. La función devuelve los valores de fecha y hora como una hora universal coordinada (UTC). datetime2(7) No determinista

Funciones de fecha y hora del sistema de precisión baja

Función Sintaxis Valor devuelto Tipo de datos devuelto Determinismo
CURRENT_TIMESTAMP CURRENT_TIMESTAMP Devuelve un valor datetime que contiene la fecha y hora del equipo en el que se ejecuta la instancia de SQL Server. El valor devuelto no incluye el desplazamiento de zona horaria. datetime No determinista
GETDATE GETDATE ( ) Devuelve un valor datetime que contiene la fecha y hora del equipo en el que se ejecuta la instancia de SQL Server. El valor devuelto no incluye el desplazamiento de zona horaria. datetime No determinista
GETUTCDATE GETUTCDATE ( ) Devuelve un valor datetime que contiene la fecha y hora del equipo en el que se ejecuta la instancia de SQL Server. La función devuelve los valores de fecha y hora como una hora universal coordinada (UTC). datetime No determinista

Funciones que devuelven elementos de fecha y hora

Función Sintaxis Valor devuelto Tipo de datos devuelto Determinismo
DATE_BUCKET DATE_BUCKET ( datepart, number, date, origin ) Devuelve un valor de fecha y hora correspondiente al inicio de cada cubo de fecha y hora, desde la marca de tiempo definida por el parámetro origin o el valor de origen predeterminado de 1900-01-01 00:00:00.000, si el parámetro de origen no se ha especificado. El tipo devuelto depende del argumento proporcionado para date. No determinista
DATENAME DATENAME ( datepart, date ) Devuelve una cadena de caracteres que representa el parámetro datepart especificado de la fecha especificada. nvarchar No determinista
DATEPART DATEPART ( datepart, date ) Devuelve un entero que representa el parámetro datepart especificado del parámetro date especificado. int No determinista
DATETRUNC DATETRUNC ( datepart, date ) Devuelve una fecha de entrada truncada a un datepart especificado. El tipo devuelto depende del argumento proporcionado para date. No determinista
DAY DAY (date) Devuelve un entero que representa la parte del día del parámetro date especificado. int Determinista
MONTH MONTH (date) Devuelve un entero que representa la parte del mes del parámetro date especificado. int Determinista
YEAR YEAR (date) Devuelve un entero que representa la parte del año del parámetro date especificado. int Determinista

Funciones que devuelven valores de fecha y hora de sus elementos

Función Sintaxis Valor devuelto Tipo de datos devuelto Determinismo
DATEFROMPARTS DATEFROMPARTS ( año, mes, día ) Devuelve un valor de tipo date para el año, mes y día especificados. date Determinista
DATETIME2FROMPARTS DATETIME2FROMPARTS ( año, mes, día, hora, minuto, segundos, fracciones, precisión) Devuelve un valor datetime2 para la fecha y la hora especificadas, con la precisión indicada. datetime2(precision) Determinista
DATETIMEFROMPARTS DATETIMEFROMPARTS ( año, mes, día, hora, minuto, segundos, milisegundos) Devuelve un valor datetime para la fecha y la hora especificadas. datetime Determinista
DATETIMEOFFSETFROMPARTS DATETIMEOFFSETFROMPARTS ( año, mes, día, hora, minuto, segundos, fracciones, desplazamiento_de_hora, desplazamiento_de_minuto, precisión) Devuelve un valor datetimeoffset para la fecha y la hora especificadas, con los desplazamientos y la precisión indicados. datetimeoffset(precision) Determinista
SMALLDATETIMEFROMPARTS SMALLDATETIMEFROMPARTS ( año, mes, día, hora, minuto ) Devuelve un valor smalldatetime de la fecha y la hora especificadas. smalldatetime Determinista
TIMEFROMPARTS TIMEFROMPARTS ( hora, minuto, segundos, fracciones, precisión ) Devuelve un valor time para la hora especificada, con la precisión indicada. time(precision) Determinista

Funciones que devuelven valores de diferencia de fecha y hora

Función Sintaxis Valor devuelto Tipo de datos devuelto Determinismo
DATEDIFF DATEDIFF ( datepart, startdate, enddate ) Devuelve el número de límites datepart de fecha y hora que se han superado entre dos fechas especificadas. int Determinista
DATEDIFF_BIG DATEDIFF_BIG ( datepart, startdate, enddate ) Devuelve el número de límites datepart de fecha y hora que se han superado entre dos fechas especificadas. bigint Determinista

Funciones que modifican valores de fecha y hora

Función Sintaxis Valor devuelto Tipo de datos devuelto Determinismo
DATEADD DATEADD (datepart, number, date ) Devuelve un nuevo valor datetime al agregar un intervalo al datepart especificado del date indicado. El tipo de datos del argumento date Determinista
EOMONTH EOMONTH ( fecha_inicio [, mes_para_agregar ] ) Devuelve el último día del mes que contiene la fecha especificada, con un desplazamiento opcional. El tipo de valor devuelto es el tipo del argumento start_date, o bien como alternativa, el tipo de datos date. Determinista
SWITCHOFFSET SWITCHOFFSET (DATETIMEOFFSET, time_zone) SWITCHOFFSET cambia el desplazamiento de zona horaria de un valor DATETIMEOFFSET y conserva el valor UTC. datetimeoffset con la precisión fraccionaria del argumento DATETIMEOFFSET Determinista
TODATETIMEOFFSET TODATETIMEOFFSET (expression, time_zone) TODATETIMEOFFSET transforma un valor datetime2 en un valor datetimeoffset. TODATETIMEOFFSET interpreta el valor datetime2 en la hora local, para el valor time_zone especificado. datetimeoffset con la precisión fraccionaria del argumento datetime Determinista

Funciones que establecen o devuelven funciones de formato de sesión

Función Sintaxis Valor devuelto Tipo de datos devuelto Determinismo
@@DATEFIRST @@DATEFIRST Devuelve el valor actual, para la sesión, de SET DATEFIRST. tinyint No determinista
SET DATEFIRST SET DATEFIRST { number | @number_var } Establece el primer día de la semana en un número del 1 al 7. No aplicable No aplicable
SET DATEFORMAT SET DATEFORMAT { format | @format_var } Determina el orden de los componentes de la fecha (mes/día/año) para escribir datos de tipo datetime o smalldatetime. No aplicable No aplicable
@@LANGUAGE @@LANGUAGE Devuelve el nombre del idioma que se está usando. @@LANGUAGE no es ninguna función de fecha u hora. Sin embargo, la configuración de idioma puede afectar a la salida de las funciones de fecha. No aplicable No aplicable
SET LANGUAGE SET LANGUAGE { [ N ] 'language' | @language_var } Establece el entorno del idioma de la sesión y los mensajes del sistema. SET LANGUAGE no es ninguna función de fecha u hora. Sin embargo, la configuración de idioma afecta a la salida de las funciones de fecha. No aplicable No aplicable
sp_helplanguage sp_helplanguage [ [ @language = ] 'language' ] Devuelve información sobre los formatos de fecha de todos los idiomas compatibles. sp_helplanguage no es un procedimiento almacenado de fecha u hora. Sin embargo, la configuración de idioma afecta a la salida de las funciones de fecha. No aplicable No aplicable

Funciones que validan valores de fecha y hora

Función Sintaxis Valor devuelto Tipo de datos devuelto Determinismo
ISDATE ISDATE (expression) Determina si una expresión de entrada datetime o smalldatetime tiene un valor de fecha u hora válido. int ISDATE solo es determinista si se usa con la función CONVERT, cuando se especifica el parámetro de estilo CONVERT y cuando el estilo no es igual a 0, 100, 9 ni 109.

Artículos relacionados con la fecha y hora

Artículo Descripción
FORMAT Devuelve un valor con formato con el formato y la referencia cultural opcional especificados. Use la función FORMAT para aplicar formato específico de la configuración regional de los valores de fecha/hora y de número como cadenas.
CAST y CONVERT (Transact-SQL) Proporciona información sobre la conversión de los valores de fecha y hora de literales de cadena y otros formatos de fecha y hora.
Escribir instrucciones Transact-SQL internacionales Proporciona directrices para la portabilidad de bases datos y aplicaciones de bases de datos que utilizan instrucciones Transact-SQL de un idioma a otro, o que admiten varios idiomas.
Funciones escalares de ODBC (Transact-SQL) Proporciona información sobre funciones escalares de ODBC que se pueden usar en instrucciones Transact-SQL. Esto incluye las funciones de fecha y hora ODBC.
AT TIME ZONE (Transact-SQL) Proporciona la conversión de zona horaria.

Vea también