Categorias:

Funções de data e hora

EXTRACT

Extrai a parte da data ou hora especificada de uma data, hora ou carimbo de data/hora.

Dica

Para extrair a data de um carimbo de data/hora, use a função TO_DATE.

Alternativas:

DATE_PART , HOUR / MINUTE / SECOND , YEAR* / DAY* / WEEK* / MONTH / QUARTER

Sintaxe

EXTRACT( <date_or_time_part> FROM <date_time_or_timestamp_expr> ) 
Copy
EXTRACT( <date_or_time_part> , <date_time_or_timestamp_expr> ) 
Copy

Argumentos

date_or_time_part

A unidade de tempo. Deve ser um dos valores listados em Partes de data e hora com suporte (por exemplo, month). O valor pode ser uma cadeia de caracteres literal ou pode estar sem aspas (por exemplo, 'month' ou month).

  • Quando date_or_time_part é week (ou qualquer uma de suas variações), a saída é controlada pelo parâmetro de sessão WEEK_START.

  • Quando date_or_time_part for dayofweek ou yearofweek (ou qualquer uma de suas variações), a saída será controlada pelos parâmetros de sessão WEEK_OF_YEAR_POLICY e WEEK_START.

Para obter mais informações, incluindo exemplos, consulte Semanas do ano e dias úteis.

date_time_or_timestamp_expr

Uma data, uma hora ou um carimbo de data/hora, ou uma expressão que pode ser avaliada como uma data, uma hora ou um carimbo de data/hora.

Retornos

Retorna um valor de tipo de dados NUMBER.

Notas de uso

Atualmente, quando date_or_timestamp_expr é um valor DATE, os seguintes valores date_or_time_part não são compatíveis:

  • epoch_millisecond

  • epoch_microsecond

  • epoch_nanosecond

Outras partes de data e hora (incluindo epoch_second) são compatíveis.

Exemplos

Especifique a parte year para extrair o ano de um carimbo de data/hora:

SELECT EXTRACT(year FROM TO_TIMESTAMP('2024-04-10T23:39:20.123-07:00')) AS YEAR; 
Copy
+------+ | YEAR | |------| | 2024 | +------+ 

Use EXTRACT com a função DECODE e a parte dayofweek para retornar o nome completo do dia atual da semana:

SELECT DECODE(EXTRACT(dayofweek FROM SYSTIMESTAMP()), 1, 'Monday', 2, 'Tuesday', 3, 'Wednesday', 4, 'Thursday', 5, 'Friday', 6, 'Saturday', 7, 'Sunday') AS DAYOFWEEK; 
Copy
+-----------+ | DAYOFWEEK | |-----------| | Thursday | +-----------+ 

Nota

A saída depende do valor retornado pela função SYSTIMESTAMP quando você executa a consulta. Além disso, você pode usar a função DAYNAME para extrair o nome de três letras do dia da semana da data ou do carimbo de data/hora especificado.