Compartilhar via


DATENAME (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)

Esta função retorna uma cadeia de caracteres que representa o datepart especificado do argumento date especificado.

Confira Funções e tipos de dados de data e hora (Transact-SQL) para ter uma visão geral de todas as funções e tipos de dados de data e hora do Transact-SQL.

Convenções de sintaxe de Transact-SQL

Sintaxe

DATENAME ( datepart , date )  

Argumentos

datepart
A parte específica do argumento date que DATENAME retornará. Esta tabela lista todos os argumentos datepart válidos.

Observação

DATENAME não aceita os equivalentes de variável definidos pelo usuário para os argumentos datepart.

datepart Abreviações
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
weekday dw, w
hour hh
minute mi, n
second ss, s
millisecond ms
microsecond mcs
nanosecond ns
TZoffset tz
ISO_WEEK ISOWK, ISOWW

date

Uma expressão que pode ser resolvida para um dos seguintes tipos de dados:

  • date
  • datetime
  • datetimeoffset
  • datetime2
  • smalldatetime
  • time

Para date, DATENAME aceitará uma variável de expressão de coluna, de expressão, de literal de cadeia de caracteres ou definida pelo usuário. Para evitar ambiguidade, use anos de quatro dígitos. Consulte Configurar a opção two digit year cutoff de configuração de servidor para obter informações sobre anos de dois dígitos.

Tipo de retorno

nvarchar

Valor retornado

  • Cada datepart retorna o mesmo valor das abreviações dela.

O valor retornado depende do ambiente de idioma definido por meio da instrução SET LANGUAGE e por Configurar a opção de configuração do servidor de idioma padrão do logon. O valor retornado depende de SET DATEFORMAT se date é uma literal de cadeia de caracteres de alguns formatos. SET DATEFORMAT não altera o valor retornado quando a data é uma expressão de coluna de um tipo de dados de data ou de hora.

Quando o parâmetro date tem um argumento de tipo de dados date, o valor retornado depende da configuração especificada por SET DATEFIRST.

Argumento datepart TZoffset

Se o argumento datepart é TZoffset (tz) e o argumento data não tem nenhum deslocamento de fuso horário, DATEADD retorna 0.

Argumento smalldatetime de date

Quando date é smalldatetime, DATENAME retorna os segundos como 00.

Padrão retornado para um datepart que não está no argumento de data

Se o tipo de dados do argumento date não tiver a datepart especificada, DATENAME retornará o padrão para essa datepart apenas quando o argumento date tiver um literal.

Por exemplo, o ano-mês-dia padrão para qualquer tipo de dados de date é 1900-01-01. Esta instrução tem argumentos de parte de data para datepart, um argumento de hora para date e DATENAME retorna 1900, January, 1, 1, Monday.

SELECT DATENAME(year, '12:10:30.123')  
    ,DATENAME(month, '12:10:30.123')  
    ,DATENAME(day, '12:10:30.123')  
    ,DATENAME(dayofyear, '12:10:30.123')  
    ,DATENAME(weekday, '12:10:30.123');  

Se date é especificada como uma variável ou coluna de tabela e o tipo de dados dessa variável ou coluna não tem a datepart especificada, DATENAME retorna o erro 9810. Neste exemplo, a variável @t tem um tipo de dados time. O exemplo falha porque o ano da parte de data é inválido para o tipo de dados time:

DECLARE @t time = '12:10:30.123';   
SELECT DATENAME(year, @t);  

Comentários

Use DATENAME nas seguintes cláusulas:

  • GROUP BY
  • HAVING
  • ORDER BY
  • SELECT <list>
  • WHERE

No SQL Server, DATENAME converte implicitamente literais de cadeia de caracteres como um tipo datetime2. Em outras palavras, DATENAME não é compatível com o formato YDM quando a data é transmitida como uma cadeia de caracteres. É necessário converter explicitamente a cadeia de caracteres em um tipo de datetime ou smalldatetime para usar o formato YDM.

Exemplos

Este exemplo retorna as partes da data especificada. Substitua um valor datepart da tabela para o argumento datepart na instrução SELECT:

SELECT DATENAME(datepart,'2007-10-30 12:15:32.1234567 +05:10');

Veja a seguir o conjunto de resultados.

datepart Valor retornado
year, yyyy, yy 2007
quarter, qq, q 4
month, mm, m Outubro
dayofyear, dy, y 303
day, dd, d 30
week, wk, ww 44
weekday, dw Terça-feira
hour, hh 12
minute, n 15
second, ss, s 32
millisecond, ms 123
microsecond, mcs 123456
nanosecond, ns 123456700
TZoffset, tz +05:10
ISO_WEEK, ISOWK, ISOWW 44

Azure Synapse Analytics e PDW (Analytics Platform System)

Este exemplo retorna as partes da data especificada. Substitua um valor datepart da tabela para o argumento datepart na instrução SELECT:

SELECT DATENAME(datepart,'2007-10-30 12:15:32.1234567 +05:10');  

Veja a seguir o conjunto de resultados.

datepart Valor retornado
year, yyyy, yy 2007
quarter, qq, q 4
month, mm, m Outubro
dayofyear, dy, y 303
day, dd, d 30
week, wk, ww 44
weekday, dw Terça-feira
hour, hh 12
minute, n 15
second, ss, s 32
millisecond, ms 123
microsecond, mcs 123456
nanosecond, ns 123456700
TZoffset, tz +05:10
ISO_WEEK, ISOWK, ISOWW 44

Confira também

CAST e CONVERT (Transact-SQL)