Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Função EXTRACT (datetime) no Oracle


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.