Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:Banco de Dados SQL do
Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
Banco de Dados SQL no Microsoft Fabric
Esta função devolve um inteiro que representa a data-parte especificada da data especificada.
Consulte Tipos de dados e funções de data e hora (Transact-SQL) para obter uma visão geral de todos os tipos de dados e funções de data e hora do Transact-SQL.
Transact-SQL convenções de sintaxe
Sintaxe
DATEPART ( datepart , date )
Arguments
datepart
A parte específica do argumento de data para a qual DATEPART devolverá um inteiro. Esta tabela lista todos os argumentos datepart válidos.
Observação
DATEPART não aceita equivalentes de variáveis definidas pelo utilizador para os argumentos datepart .
| datepart | Abbreviations |
|---|---|
| ano | aaa, aaaa |
| trimestre | QQ, Q |
| mês | Mm, M |
| Dia do Ano | dy, y |
| Dia | DD, D |
| semana | WK, WW |
| Dias úteis | dw |
| hora | hh |
| minuto | mi, n |
| segundo | SS, S |
| milissegundos | em |
| microssegundos | MCS |
| nanossegundos | NS |
| Tzoffset | tz |
| iso_week | isowk, isoww |
date
Uma expressão que resolve para um dos seguintes tipos de dados:
- date
- datetime
- datetimeoffset
- datetime2
- smalldatetime
- time
Para data, DATEPART aceitará uma expressão de coluna, expressão, literal de cadeia de caracteres ou variável definida pelo usuário. Use anos de quatro dígitos para evitar problemas de ambiguidade. Consulte Configurar a opção de configuração do servidor de corte de ano de dois dígitos para obter informações sobre anos de dois dígitos.
Tipo de Retorno
int
Valor de retorno
Cada datepart e suas abreviaturas retornam o mesmo valor.
O valor de retorno depende do ambiente de linguagem definido usando SET LANGUAGE e da opção Configure a linguagem padrão Server Server Option do login. O valor de retorno depende de SET DATEFORMAT se date for um literal de cadeia de alguns formatos. O SET DATEFORMAT não altera o valor de retorno quando a data é uma expressão de coluna de um tipo de data ou hora.
Esta tabela lista todos os argumentos de partes de data , com valores de retorno correspondentes, para a afirmação SELECT DATEPART(datepart,'2007-10-30 12:15:32.1234567 +05:10'). O argumento date tem um tipo de dado datetimeoffset(7). As duas últimas posições do valor de retorno donanosegundo são sempre 00 e este valor tem uma escala de 9:
.123456700
| datepart | Valor de retorno |
|---|---|
| ano, yyyy, yy | 2007 |
| Quarto, Qq, Q | 4 |
| mês, mm, m | 10 |
| Dayofyear, Dy, Y | 303 |
| Dia, DD, D | 30 |
| semana, semana, ww | 44 |
| Durante a semana, DW | 3 |
| hora, hh | 12 |
| minuto, n | 15 |
| segundo, ss, s | 32 |
| milissegundo, sra. | 123 |
| Microssegundos, MCS | 123456 |
| nanossegundo, ns | 123456700 |
| Tzoffset, tz | 310 |
| iso_week, isowk, isoww | 44 |
Discussões sobre a data durante a semana e durante a semana
Para uma data de semana (semana, ww) ou dia de semana (dw), o DATEPART valor de retorno depende do valor definido por SET DATEFIRST.
1 de janeiro de qualquer ano define o número inicial para a datada semana. Por exemplo:
DATEPART (semana, '1 de janeiro, xxxx') = 1
onde xxxx é qualquer ano.
Esta tabela mostra o valor de retorno para a semana e a datado dia útil para '2007-04-21' para cada argumento SET DATEFIRST. 1 de janeiro de 2007 cai numa segunda-feira. O dia 21 de abril de 2007 cai num sábado. Para o inglês dos EUA,
SET DATEFIRST 7 -- ( Sunday )
serve como padrão. Depois de definir o DATEFIRST, use esta instrução SQL sugerida para os valores da tabela datapart:
SELECT DATEPART(week, '2007-04-21 '), DATEPART(weekday, '2007-04-21 ')
| DEFINIR A DATA PRIMEIRO argumento |
semana devolvido |
Dia da semana devolvido |
|---|---|---|
| 1 | 16 | 6 |
| 2 | 17 | 5 |
| 3 | 17 | 4 |
| 4 | 17 | 3 |
| 5 | 17 | 2 |
| 6 | 17 | 1 |
| 7 | 16 | 7 |
ano, mês e dia parte de data Argumentos
Os valores devolvidos para DATEPART (ano, data), DATEPART (mês, data) e DATEPART (dia, data) são os mesmos que os devolvidos pelas funções YEAR, MONTH e DAY, respetivamente.
iso_week datepart
A ISO 8601 inclui o sistema de datas de semana ISO, um sistema de numeração para semanas. Cada semana está associada ao ano em que ocorre a quinta-feira. Por exemplo, a semana 1 de 2004 (2004W01) abrangeu de segunda-feira, 29 de dezembro de 2003 a domingo, 4 de janeiro de 2004. Os países/regiões europeias normalmente usam este estilo de numeração. Países/regiões não europeias normalmente não o utilizam.
Nota: o maior número semanal num ano pode ser 52 ou 53.
Os sistemas de numeração de diferentes países/regiões podem não cumprir a norma ISO. Esta tabela mostra seis possibilidades:
| Primeiro dia da semana | A primeira semana do ano contém | Semanas atribuídas duas vezes | Usado por/em |
|---|---|---|---|
| Domingo | 1 de janeiro, Primeiro sábado, 1 a 7 dias do ano |
Yes | Estados Unidos |
| Segunda-feira | 1 de janeiro, Primeiro domingo, 1 a 7 dias do ano |
Yes | Grande parte da Europa e do Reino Unido |
| Segunda-feira | 4 de janeiro, Primeira quinta-feira, 4-7 dias do ano |
Não | ISO 8601, Noruega e Suécia |
| Segunda-feira | 7 de janeiro, Primeira segunda-feira, Sete dias do ano |
Não | |
| Quarta-feira | 1 de janeiro, Primeira terça-feira, 1 a 7 dias do ano |
Yes | |
| Sábado | 1 de janeiro, Primeira sexta-feira, 1 a 7 dias do ano |
Yes |
Tzoffset
DATEPART devolve o valor tzoffset (tz) como o número de minutos (assinados). Esta declaração apresenta um desfasamento de fuso horário de 310 minutos:
SELECT DATEPART (tzoffset, '2007-05-10 00:00:01.1234567 +05:10');
DATEPART Apresenta o valor tzoffset da seguinte forma:
- Para datetimeoffset e datetime2, tzoffset devolve o deslocamento temporal em minutos, onde o deslocamento para datetime2 é sempre 0 minutos.
- Para tipos de dados que podem converter implicitamente para datatimeoffset ou datetime2,
DATEPARTdevolve o deslocamento temporal em minutos. Exceção: outros tipos de dados de data/hora. - Parâmetros de todos os outros tipos resultam num erro.
smalldatetime date Argumento
Para um valor DATEPARTde data de data pequena, devolve segundos como 00.
Default Devolvido para uma data que não está num argumento de data
Se o tipo de dado do argumento date não tiver a datapart especificada, DATEPART só devolverá o padrão para essa datepart quando um literal for especificado para data.
Por exemplo, o ano-mês-dia por defeito para qualquer tipo de data é 1900-01-01. Esta afirmação tem argumentos de data para datepart, um argumento de tempo para data, e devolve 1900, 1, 1, 1, 2.
SELECT DATEPART(year, '12:10:30.123')
,DATEPART(month, '12:10:30.123')
,DATEPART(day, '12:10:30.123')
,DATEPART(dayofyear, '12:10:30.123')
,DATEPART(weekday, '12:10:30.123');
Se a data for especificada como uma variável ou coluna de tabela, e o tipo de dado dessa variável ou coluna não tiver a data especificada, DATEPART devolverá o erro 9810. Neste exemplo, a variável @t tem um tipo de dado temporal . O exemplo falha porque a data do ano parcial é inválida para o tipo de dado temporal :
DECLARE @t time = '12:10:30.123';
SELECT DATEPART(year, @t);
Segundos fracionários
Estas instruções mostram que DATEPART devolve frações de segundo:
SELECT DATEPART(millisecond, '00:00:01.1234567'); -- Returns 123
SELECT DATEPART(microsecond, '00:00:01.1234567'); -- Returns 123456
SELECT DATEPART(nanosecond, '00:00:01.1234567'); -- Returns 123456700
Observações
DATEPART podem ser usados nas cláusulas da lista de seleção WHERE, HAVING, GROUP BY, e ORDER BY.
O DATEPART projeta implicitamente literais de string como um tipo datetime2 no SQL Server 2008 (10.0.x) e posteriores. Isto significa que o DATENAME não suporta o formato YDM quando a data é passada como uma cadeia. Você deve converter explicitamente a cadeia de caracteres para um tipo datetime ou smalldatetime para usar o formato YDM.
Examples
Este exemplo devolve o ano base. O ano base ajuda nos cálculos das datas. No exemplo, um número especifica a data. Note que o SQL Server interpreta 0 como 1 de janeiro de 1900.
SELECT DATEPART(year, 0), DATEPART(month, 0), DATEPART(day, 0);
-- Returns: 1900 1 1
Este exemplo devolve a parte do dia da 12/20/1974data .
-- Uses AdventureWorks
SELECT TOP(1) DATEPART (day,'12/20/1974') FROM dbo.DimCustomer;
-- Returns: 20
Este exemplo devolve a parte do ano da data 12/20/1974.
-- Uses AdventureWorks
SELECT TOP(1) DATEPART (year,'12/20/1974') FROM dbo.DimCustomer;
-- Returns: 1974