Categorias:

Funções de data e hora

YEAR* / DAY* / WEEK* / MONTH / QUARTER

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

Estas funções são alternativas ao uso da função DATE_PART (ou EXTRACT) com a parte de data equivalente (consulte Partes de data e hora com suporte).

Consulte também:

HOUR / MINUTE / SECOND

Sintaxe

YEAR( <date_or_timestamp_expr> ) YEAROFWEEK( <date_or_timestamp_expr> ) YEAROFWEEKISO( <date_or_timestamp_expr> ) DAY( <date_or_timestamp_expr> ) DAYOFMONTH( <date_or_timestamp_expr> ) DAYOFWEEK( <date_or_timestamp_expr> ) DAYOFWEEKISO( <date_or_timestamp_expr> ) DAYOFYEAR( <date_or_timestamp_expr> ) WEEK( <date_or_timestamp_expr> ) WEEKOFYEAR( <date_or_timestamp_expr> ) WEEKISO( <date_or_timestamp_expr> ) MONTH( <date_or_timestamp_expr> ) QUARTER( <date_or_timestamp_expr> ) 
Copy

Argumentos

date_or_timestamp_expr

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

Retornos

Esta função retorna um valor do tipo NUMBER.

Notas de uso

Nome da função

Parte da data extraída da data de entrada ou do carimbo de data/hora

Valores possíveis

YEAR

Ano

Qualquer ano válido (por exemplo, 2025)

YEAROFWEEK [1]

Ano ao qual a semana extraída pertence

Qualquer ano válido (por exemplo, 2025)

YEAROFWEEKISO

Ano ao qual a semana extraída pertence usando a semântica ISO

Qualquer ano válido (por exemplo, 2025)

DAY , DAYOFMONTH

Dia (número) do mês

1 a 31

DAYOFWEEK [1]

Dia (número) da semana

0 a 7

DAYOFWEEKISO

Dia (número) da semana usando a semântica ISO

1 a 7

DAYOFYEAR

Dia (número) do ano

1 a 366

WEEK , WEEKOFYEAR [1]

Semana (número) do ano

1 a 54

WEEKISO

Semana (número) do ano usando a semântica ISO

1 a 53

MONTH

Mês (número) do ano

1 a 12

QUARTER

Trimestre (número) do ano

1 a 4

[1] Resultados ditados pelos valores definidos para os parâmetros de sessão WEEK_OF_YEAR_POLICY e/ou WEEK_START.

Para obter mais detalhes sobre o parâmetro e semântica ISO, consulte Semanas do ano e dias úteis.

Exemplos

O exemplo a seguir demonstra o uso das funções YEAR, QUARTER, MONTH, DAY, DAYOFWEEK e DAYOFYEAR:

SELECT '2025-04-11T23:39:20.123-07:00'::TIMESTAMP AS tstamp, YEAR(tstamp) AS "YEAR", QUARTER(tstamp) AS "QUARTER OF YEAR", MONTH(tstamp) AS "MONTH", DAY(tstamp) AS "DAY", DAYOFMONTH(tstamp) AS "DAY OF MONTH", DAYOFYEAR(tstamp) AS "DAY OF YEAR"; 
Copy
+-------------------------+------+-----------------+-------+-----+--------------+-------------+ | TSTAMP | YEAR | QUARTER OF YEAR | MONTH | DAY | DAY OF MONTH | DAY OF YEAR | |-------------------------+------+-----------------+-------+-----+--------------+-------------| | 2025-04-11 23:39:20.123 | 2025 | 2 | 4 | 11 | 11 | 101 | +-------------------------+------+-----------------+-------+-----+--------------+-------------+ 

O exemplo a seguir demonstra o uso das funções WEEK, WEEKISO, WEEKOFYEAR, YEAROFWEEK e YEAROFWEEKISO. O parâmetro de sessão WEEK_OF_YEAR_POLICY é definido como 1, de modo que a primeira semana do ano é a semana que contém o dia 1º de janeiro desse ano.

ALTER SESSION SET WEEK_OF_YEAR_POLICY = 1; 
Copy
SELECT '2016-01-02T23:39:20.123-07:00'::TIMESTAMP AS tstamp, WEEK(tstamp) AS "WEEK", WEEKISO(tstamp) AS "WEEK ISO", WEEKOFYEAR(tstamp) AS "WEEK OF YEAR", YEAROFWEEK(tstamp) AS "YEAR OF WEEK", YEAROFWEEKISO(tstamp) AS "YEAR OF WEEK ISO"; 
Copy
+-------------------------+------+----------+--------------+--------------+------------------+ | TSTAMP | WEEK | WEEK ISO | WEEK OF YEAR | YEAR OF WEEK | YEAR OF WEEK ISO | |-------------------------+------+----------+--------------+--------------+------------------| | 2016-01-02 23:39:20.123 | 1 | 53 | 1 | 2016 | 2015 | +-------------------------+------+----------+--------------+--------------+------------------+ 

O exemplo a seguir também demonstra o uso das funções WEEK, WEEKISO, WEEKOFYEAR, YEAROFWEEK e YEAROFWEEKISO. O parâmetro de sessão WEEK_OF_YEAR_POLICY é definido para indicar que a primeira semana do ano é a primeira semana do ano que contém pelo menos quatro dias desse ano. Neste exemplo, a semana de 27 de dezembro de 2015 a 2 de janeiro de 2016 é considerada a última semana de 2015, não a primeira semana de 2016. Embora a semana contenha a sexta-feira, 1º de janeiro de 2016, menos da metade da semana é em 2016.

ALTER SESSION SET WEEK_OF_YEAR_POLICY = 0; 
Copy
SELECT '2016-01-02T23:39:20.123-07:00'::TIMESTAMP AS tstamp, WEEK(tstamp) AS "WEEK", WEEKISO(tstamp) AS "WEEK ISO", WEEKOFYEAR(tstamp) AS "WEEK OF YEAR", YEAROFWEEK(tstamp) AS "YEAR OF WEEK", YEAROFWEEKISO(tstamp) AS "YEAR OF WEEK ISO"; 
Copy
+-------------------------+------+----------+--------------+--------------+------------------+ | TSTAMP | WEEK | WEEK ISO | WEEK OF YEAR | YEAR OF WEEK | YEAR OF WEEK ISO | |-------------------------+------+----------+--------------+--------------+------------------| | 2016-01-02 23:39:20.123 | 53 | 53 | 53 | 2015 | 2015 | +-------------------------+------+----------+--------------+--------------+------------------+ 

O exemplo a seguir demonstra o uso das funções DAYOFWEEK e DAYOFWEEKISO. O parâmetro da sessão WEEK_START é definido para indicar que a semana começa no domingo.

ALTER SESSION SET WEEK_START = 7; 
Copy

O carimbo de data/hora na consulta a seguir é de 5 de abril de 2025, que foi um sábado. A função DAYOFWEEK retorna 7 para sábado, pois o primeiro dia da semana está definido como domingo. A função DAYOFWEEKISO retorna 6 porque o primeiro dia da semana usando a semântica ISO é segunda-feira. Para obter mais informações sobre a semântica ISO e o parâmetro WEEK_START, consulte Semanas do ano e dias úteis.

SELECT '2025-04-05T23:39:20.123-07:00'::TIMESTAMP AS tstamp, DAYOFWEEK(tstamp) AS "DAY OF WEEK", DAYOFWEEKISO(tstamp) AS "DAY OF WEEK ISO"; 
Copy
+-------------------------+-------------+-----------------+ | TSTAMP | DAY OF WEEK | DAY OF WEEK ISO | |-------------------------+-------------+-----------------| | 2025-04-05 23:39:20.123 | 7 | 6 | +-------------------------+-------------+-----------------+ 

O exemplo a seguir também demonstra o uso das funções DAYOFWEEK e DAYOFWEEKISO. O parâmetro da sessão WEEK_START é definido para indicar que a semana começa na segunda-feira.

ALTER SESSION SET WEEK_START = 1; 
Copy
SELECT '2025-04-05T23:39:20.123-07:00'::TIMESTAMP AS tstamp, DAYOFWEEK(tstamp) AS "DAY OF WEEK", DAYOFWEEKISO(tstamp) AS "DAY OF WEEK ISO"; 
Copy
+-------------------------+-------------+-----------------+ | TSTAMP | DAY OF WEEK | DAY OF WEEK ISO | |-------------------------+-------------+-----------------| | 2025-04-05 23:39:20.123 | 6 | 6 | +-------------------------+-------------+-----------------+ 

Para obter mais exemplos, consulte Como trabalhar com valores de data e hora.

Para obter exemplos mais detalhados das funções relacionadas à semana (DAYOFWEEK, WEEK, WEEKOFYEAR, YEAROFWEEK, e assim por diante), consulte Semanas do ano e dias úteis.