No Oracle Database, o
EXTRACT(datetime)
A função extrai e retorna o valor de um campo de data e hora especificado de uma expressão de data e hora ou intervalo. Sintaxe
A sintaxe fica assim:
EXTRACT( { YEAR
| MONTH
| DAY
| HOUR
| MINUTE
| SECOND
| TIMEZONE_HOUR
| TIMEZONE_MINUTE
| TIMEZONE_REGION
| TIMEZONE_ABBR
}
FROM { expr }
)
Onde
expr
é qualquer expressão que avalie um tipo de dados datetime ou interval compatível com o campo solicitado. A
expr
argumento é tratado como um tipo de dados de data e hora ANSI. Exemplo 1
Aqui está um exemplo para demonstrar a função:
SELECT EXTRACT(YEAR FROM DATE '2027-10-03')
FROM DUAL;
Resultado:
2027
Exemplo 2
Aqui está um exemplo que extrai os segundos e microssegundos de um
TIMESTAMP
valor:SELECT
EXTRACT(SECOND FROM TIMESTAMP '2027-10-15 23:10:57.98321 +04:00') AS Result
FROM DUAL;
Resultado:
57.98321
Intervalos
Aqui está um exemplo que extrai o ano de um literal de intervalo:
SELECT EXTRACT(YEAR FROM INTERVAL '25-3' YEAR TO MONTH)
FROM DUAL;
Resultado:
25
Tentando extrair o campo errado
Veja o que acontece quando tentamos extrair um campo que não existe no valor especificado:
SELECT
EXTRACT(SECOND FROM DATE '2027-10-15') AS Result
FROM DUAL;
Resultado:
Error starting at line : 1 in command - SELECT EXTRACT(SECOND FROM DATE '2027-10-15') AS Result FROM DUAL Error at Command Line : 2 Column : 25 Error report - SQL Error: ORA-30076: invalid extract field for extract source 30076. 00000 - "invalid extract field for extract source" *Cause: The extract source does not contain the specified extract field. *Action:
Nem todas as partes da data podem ser extraídas de todos os tipos de dados. Consulte a documentação do Oracle para obter as partes de datas aceitas para cada tipo de dados fornecido.