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 |