SET DATEFORMAT (Transact-SQL)

Se aplica a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)Punto de conexión de análisis SQL en Microsoft FabricAlmacenamiento en Microsoft Fabric

Establece el orden de las partes correspondientes al mes, día y año de una fecha para interpretar las cadenas de caracteres de fecha. Estas cadenas son de tipo date, smalldatetime, datetime, datetime2 o datetimeoffset.

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

SET DATEFORMAT { format | @format_var }   

Nota:

Para ver la sintaxis de Transact-SQL para SQL Server 2014 (12.x) y versiones anteriores, consulte Versiones anteriores de la documentación.

Argumentos

format | @format_var
Es el orden de las partes de la fecha. Los parámetros válidos son mdy, dmy, ymd, ydm, myd y dym. Puede ser Unicode o juegos de caracteres de doble byte (DBCS) convertidos a Unicode. El valor predeterminado para inglés de EE. UU. es mdy. Para más información sobre el DATEFORMAT predeterminado de todos los lenguajes admitidos, vea sp_helplanguage (Transact-SQL).

Comentarios

El valor de DATEFORMAT ydm no se admite en los tipos de datos date, datetime2 y datetimeoffset.

El valor de DATEFORMAT puede interpretar las cadenas de caracteres de manera diferente para los tipos de datos de fecha, dependiendo de su formato de cadena. Por ejemplo, las interpretaciones de datetime y smalldatetime pueden no coincidir con date, datetime2 o datetimeoffset. DATEFORMAT afecta a la interpretación de cadenas de caracteres cuando se convierten en valores de fecha para la base de datos. No afecta a la presentación de los valores de tipo de datos de fecha ni al formato en el que se almacenan en la base de datos.

Algunos formatos de cadenas de caracteres (como ISO 8601) se interpretan independientemente del valor DATEFORMAT.

La opción SET DATEFORMAT se establece en tiempo de ejecución, no en tiempo de análisis.

SET DATEFORMAT anula la configuración de formato de fecha implícita de SET LANGUAGE.

Permisos

Debe pertenecer al rol public .

Ejemplos

El ejemplo siguiente utiliza cadenas de fecha diferentes como entradas en sesiones con el mismo valor DATEFORMAT.

-- Set date format to day/month/year.  
SET DATEFORMAT dmy;  
GO  
DECLARE @datevar DATETIME2 = '31/12/2008 09:01:01.1234567';  
SELECT @datevar;  
GO  
-- Result: 2008-12-31 09:01:01.123  
SET DATEFORMAT dmy;  
GO  
DECLARE @datevar DATETIME2 = '12/31/2008 09:01:01.1234567';  
SELECT @datevar;  
GO  
-- Result: Msg 241: Conversion failed when converting date and/or time -- from character string.  
  
GO  

Vea también

Instrucciones SET (Transact-SQL)