SET DATEFORMAT (Transact-SQL)
Define a ordem das partes do mês, dia e ano para interpretar date, smalldatetime, datetime, datetime2 e cadeias de caracteres datetimeoffset.
Para obter uma visão geral de todos os tipos de dados e funções de data e hora do Transact-SQL, consulte tipos de dados e funções de data e hora (Transact-SQL).
Aplica-se a: SQL Server (SQL Server 2008 até a versão atual), Banco de dados SQL do Windows Azure (versão inicial até a versão atual). |
Convenções da sintaxe Transact-SQL
Sintaxe
SET DATEFORMAT { format | @format_var }
Argumentos
- format | **@**format_var
É a ordem das partes de data. Parâmetros válidos são mdy, dmy, ymd, ydm, myde 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 é mdy. Para saber mais sobre o padrão DATEFORMAT de todas as linguagens de suporte, consulte sp_helplanguage (Transact-SQL).
Comentários
Não há suporte de DATEFORMAT ydm para os tipos de dados date, datetime2 e datetimeoffset.
O efeito da configuração de DATEFORMAT na interpretação de cadeias de caracteres pode ser diferente para valores datetime e smalldatetime se comparado a date, datetime2 e valores datetimeoffset, dependendo do formato da cadeia de caracteres. Esta configuração afeta a interpretação de cadeias de caracteres conforme elas são convertidas em valores de data para armazenamento no banco de dados. Ela não afeta a visualização de valores de tipo de dados de data que são armazenados no banco de dados ou o formato de armazenamento.
Alguns formatos de cadeias 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 anula a configuração de formato de data implícita de SET LANGUAGE.
Permissões
Requer associação na 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