SET DATEFORMAT (Transact-SQL)
Aplica-se a: SQL Server
Banco de Dados
SQL do Azure Instância Gerenciada de SQL do
Azure Azure Synapse Analytics
PDW (Analytics Platform System)
Ponto de extremidade de análise de SQL no Microsoft Fabric
Warehouse no Microsoft Fabric
Define a ordem das partes do mês, dia e ano para interpretar cadeias de caracteres de data. Essas cadeias de caracteres são do tipo date, smalldatetime, datetime, datetime2 ou datetimeoffset.
Para ter uma visão geral de todas as funções e tipos de dados de data e hora do Transact-SQL, confira Funções e tipos de dados de data e hora (Transact-SQL).
Convenções de sintaxe de Transact-SQL
Sintaxe
SET DATEFORMAT { format | @format_var }
Observação
Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.
Argumentos
format | @format_var
É a ordem das partes de data. Os parâmetros válidos são mdy, dmy, ymd, ydm, myd e dym. Este argumento ou pode ser Unicode ou conjuntos de caracteres de dois bytes (DBCS) convertidos para Unicode. O padrão do inglês dos EUA O padrão em inglês é mdy. Para o DATEFORMAT padrão de todos os idiomas com suporte, confira sp_helplanguage (Transact-SQL).
Comentários
O DATEFORMAT ydm não é compatível com os tipos de dados date, datetime2 e datetimeoffset.
A configuração de DATEFORMAT pode interpretar cadeias de caracteres diferentes para tipos de dados de data, dependendo do formato da cadeia de caracteres desses dados. Por exemplo, interpretações de datetime e smalldatetime talvez não correspondam a date, datetime2 ou datetimeoffset. DATEFORMAT afeta a interpretação de cadeias de caracteres conforme elas são convertidas em valores de data para o banco de dados. Ele não afeta a exibição de valores de tipo de dados de data, nem ao formato de armazenamento desses valores no banco de dados.
Alguns formatos de cadeia de caracteres são interpretados independentemente da configuração de DATEFORMAT, como ISO 8601, por exemplo.
A configuração de DATEFORMAT é definida no momento da execução e não no momento da análise.
SET DATEFORMAT substitui a configuração de formato de data implícita de SET LANGUAGE.
Permissões
Requer associação à função pública .
Exemplos
O seguinte exemplo usa cadeias de datas diferentes como entradas em sessões com a mesma configuração 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