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

Notas de uso

Nome da função

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

Valores possíveis

YEAR

Ano

Qualquer ano válido (por exemplo, 2017)

YEAROFWEEK [1]

Ano ao qual a semana extraída pertence

Qualquer ano válido (por exemplo, 2017)

YEAROFWEEKISO

O mesmo que YEAROFWEEK, exceto que usa semântica ISO

Qualquer ano válido (por exemplo, 2017)

DAY , DAYOFMONTH

Dia (número) do mês

1 a 31

DAYOFWEEK [1]

Dia (número) da semana

0 a 7

DAYOFWEEKISO

O mesmo que DAYOFWEEK, exceto que usa 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

O mesmo que WEEK, exceto que usa 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 de calendário e dias úteis.

Exemplos

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

SELECT 
       '2013-05-08T23: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";
+-------------------------+------+-----------------+-------+-----+--------------+-------------+
| TSTAMP                  | YEAR | QUARTER OF YEAR | MONTH | DAY | DAY OF MONTH | DAY OF YEAR |
|-------------------------+------+-----------------+-------+-----+--------------+-------------|
| 2013-05-08 23:39:20.123 | 2013 |               2 |     5 |   8 |            8 |         128 |
+-------------------------+------+-----------------+-------+-----+--------------+-------------+
Copy

O seguinte demonstra o uso das funções WEEK, WEEKISO, WEEKOFYEAR, YEAROFWEEK e YEAROFWEEKISO. O parâmetro da sessão WEEK_OF_YEAR_POLICY é definido para indicar que a primeira semana do ano é a semana que contém o dia 1.º de janeiro daquele 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"
       ;
+-------------------------+------+----------+--------------+--------------+------------------+
| 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 |
+-------------------------+------+----------+--------------+--------------+------------------+
Copy

O seguinte 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 4 dias daquele ano. (Assim, por exemplo, a semana de 26 de dezembro de 2010 até 1.º de janeiro de 2011 é considerada a última semana de 2010, não a primeira semana de 2011, porque embora contenha 1.º de janeiro de 2011, menos da metade da semana está em 2011).

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"
       ;
+-------------------------+------+----------+--------------+--------------+------------------+
| 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 |
+-------------------------+------+----------+--------------+--------------+------------------+
Copy

O seguinte 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
SELECT 
       '2016-01-02T23:39:20.123-07:00'::TIMESTAMP AS tstamp,
       DAYOFWEEK(tstamp) AS "DAY OF WEEK",
       DAYOFWEEKISO(tstamp) AS "DAY OF WEEK ISO"
       ;
+-------------------------+-------------+-----------------+
| TSTAMP                  | DAY OF WEEK | DAY OF WEEK ISO |
|-------------------------+-------------+-----------------|
| 2016-01-02 23:39:20.123 |           7 |               6 |
+-------------------------+-------------+-----------------+
Copy

O seguinte 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 = 0;
Copy
SELECT 
       '2016-01-02T23:39:20.123-07:00'::TIMESTAMP AS tstamp,
       DAYOFWEEK(tstamp) AS "DAY OF WEEK",
       DAYOFWEEKISO(tstamp) AS "DAY OF WEEK ISO"
       ;
+-------------------------+-------------+-----------------+
| TSTAMP                  | DAY OF WEEK | DAY OF WEEK ISO |
|-------------------------+-------------+-----------------|
| 2016-01-02 23:39:20.123 |           6 |               6 |
+-------------------------+-------------+-----------------+
Copy

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

Para exemplos mais detalhados das funções relacionadas à semana (DAYOFWEEK, WEEK, WEEKOFYEAR, YEAROFWEEK etc.), consulte Semanas de calendário e dias úteis.