Share via


DATEPART (Transact-SQL)

Retorna um inteiro que representa a datepart especificada da date especificada.

Para obter uma visão geral de todos os tipos de dados e funções de data e hora de Transact-SQL, consulte tipos de dados e funções de data e hora (Transact-SQL). Para obter informações e exemplos comuns aos tipos de dados e funções de data e hora, consulte Usando dados de data e hora.

Ícone de vínculo de tópicoConvenções de Sintaxe Transact-SQL

Sintaxe

DATEPART (datepart , date )

Argumentos

  • datepart
    É a parte de date (um valor de data ou hora) para a qual um integer será retornado. A tabela a seguir lista todos os argumentos datepart válidos. Equivalentes de variável definidos pelo usuário não são válidos.

    datepart

    Abreviações

    year

    yy, yyyy

    quarter

    qq, q

    month

    mm, m

    dayofyear

    dy, y

    day

    dd, d

    week

    wk, ww

    weekday

    dw

    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 valor time, date, smalldatetime, datetime, datetime2 ou datetimeoffset. date pode ser uma expressão, uma expressão de coluna, uma variável definida pelo usuário ou um literal de cadeia de caracteres.

    Para evitar ambigüidade, use anos de quatro dígitos. Para obter informações sobre anos de dois dígitos, consulte Opção two digit year cutoff.

Tipo de retorno

int

Valor de retorno

Cada datepart e suas abreviações retornam o mesmo valor.

O valor do retorno depende do ambiente de idioma definido usando SET LANGUAGE e do idioma padrão do logon. Se date for uma literal de cadeia de caracteres para alguns formatos, o valor de retorno dependerá do formato especificado usando SET DATEFORMAT. SET DATEFORMAT não afeta o valor de retorno quando a data é uma expressão de coluna de um tipo de dados de data de hora.

A tabela a seguir lista todos os argumentos datepart com valores de retorno correspondentes para a instrução SELECT DATEPART(datepart,'2007-10-30 12:15:32.1234567 +05:10'). O tipo de dados do argumento date é datetimeoffset(7). O valor de retorno nanoseconddatepart tem uma escala de 9 (0,123456700) e as últimas duas posições sempre são 00.

datepart

Valor de retorno

year, yyyy, yy

2007

quarter, qq, q

4

month, mm, m

10

dayofyear, dy, y

303

day, dd, d

30

week, wk, ww

45

weekday, dw

1

hour, hh

12

minute, n

15

second, ss, s

32

millisecond, ms

123

microsecond, mcs

123456

nanosecond, ns

123456700

TZoffset, tz

310

Argumentos datepart de week e weekday

Quando datepart for week (wk, ww) ou weekday (dw), o valor de retorno dependerá do valor definido usando SET DATEFIRST.

O dia 1º de janeiro de qualquer ano define o número inicial de weekdatepart, por exemplo: DATEPART (wk, '1 de janeiro, xxxx') = 1, onde xxxx é qualquer ano.

A tabela a seguir lista o valor de retorno para week e weekdaydatepart para ‘2007-04-21’ para cada argumento SET DATEFIRST. O dia 1º de Janeiro é um domingo do ano de 2007. O dia 21 de abril é um sábado do ano de 2007. SET DATEFIRST 7, domingo, é o padrão para inglês norte-americano.

SET DATEFIRST

argumento

week

retornado

weekday

retornado

1

16

6

2

17

5

3

17

4

4

17

3

5

17

2

6

17

1

7

16

7

Argumentos datepart de year, month e day

Os valores que são retornados para DATEPART (year, date), DATEPART (month, date) e DATEPART (day, date) são iguais aos retornados pelas funções YEAR, MONTH e DAY, respectivamente.

ISO_WEEK datepart

O ISO 8601 inclui o sistema de data 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) vai de segunda-feira, 29 de dezembro de 2003 a sábado, 4 de janeiro de 2004. O número de semana mais alto em um ano pode ser 52 ou 53. Esse estilo de numeração é geralmente usado em países europeus, mas raramente em outro lugar.

O sistema de numeração em países diferentes pode não estar em conformidade com o padrão ISO. Há pelo menos seis possibilidades como mostrado na tabela a seguir

Primeiro dia da semana

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

Sim

Estados Unidos

Segunda-feira

1º de janeiro,

Primeiro domingo,

1 a 7 dias do ano

Sim

A maior parte da Europa e do Reino Unido

Segunda-feira

4 de janeiro,

Primeira quinta-feira,

4 a 7 dias do ano

Não

ISO 8601, Noruega e Suécia

Segunda-feira

7 de janeiro,

Primeira segunda-feira,

7 dias do ano

Não

Quarta-feira

1º de janeiro,

Primeira terça-feira,

1 a 7 dias do ano

Sim

Sábado

1º de janeiro,

Primeira sexta-feira,

1 a 7 dias do ano

Sim

TZoffset

O TZoffset (tz) é retornado como o número de minutos (atribuído). A instrução a seguir retorna um deslocamento de fuso horário de 310 minutos.

SELECT DATEPART (TZoffset, 2007-05-10  00:00:01.1234567 +05:10);

Se o argumento for datepartTZoffset (tz) e o argumento date não for do tipo de dados datetimeoffset, NULL será retornado.

Argumento de data smalldatetime

Quando date for smalldatetime, os segundos serão retornados como 00.

Padrão retornado para um datepart que não esteja em um argumento de data

Se o tipo de dados do argumento date não tiver o datepart especificado, o padrão para aquele datepart será retornado.

Por exemplo, o ano-mês-dia padrão para qualquer tipo de dados date é 1900-01-01. A instrução a seguir tem argumentos de parte de data para datepart, um argumento de hora para date e retorna 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');

A hora-minuto-segundo padrão para o tipo de dados time é 00:00:00. A instrução a seguir tem argumentos de parte de hora para datepart, um argumento de data para date e retorna 0, 0, 0.

SELECT DATEPART(hour, '2007-06-01')
    ,DATEPART(minute, '2007-06-01')
    ,DATEPART(second, '2007-06-01');

Segundos fracionários

Segundos fracionários são retornados como mostrado nas seguintes instruções:

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

Comentários

DATEPART pode ser usado na lista de seleção, cláusulas WHERE, HAVING, GROUP BY e ORDER BY. No SQL Server 2008, DATEPART converte implicitamente literais de cadeias de caracteres como tipos datetime2. Ao usar o DATEPART com DATEADD, evite conversões implícitas de literais de cadeias de caracteres. Para obter mais informações, consulte DATEADD (Transact-SQL)

Exemplos

O exemplo a seguir retorna o ano base. O ano base é útil para cálculos de data. No exemplo, a data é especificada como um número. Observe que SQL Server interpreta 0 como 1º de janeiro de 1900. 

SELECT DATEPART(year, 0), DATEPART(month, 0), DATEPART(day, 0);
-- Returns: 1900    1    1 */

Consulte também

Referência