Sintaxe
extract_datetime :: =
Descrição da ilustração extract_datetime.gif
Objetivo
EXTRACT
extrai e retorna o valor de um campo datetime especificado de uma expressão de valor datetime ou intervalo. Quando você extrai um TIMEZONE_REGION
ou TIMEZONE_ABBR
(abreviação), o valor retornado é uma string contendo o nome ou abreviação do fuso horário apropriado. Quando você extrai qualquer um dos outros valores, o valor retornado está no calendário gregoriano. Ao extrair de uma data e hora com um valor de fuso horário, o valor retornado é em UTC. Para obter uma lista de nomes de fusos horários e suas abreviações correspondentes, consulte a V$TIMEZONE_NAMES
visualização dinâmica de desempenho.
Esta função pode ser muito útil para manipular valores de campos de data e hora em tabelas grandes, conforme mostrado no primeiro exemplo abaixo.
Nota:
Os nomes das regiões de fuso horário são necessários para o recurso de horário de verão. Os nomes das regiões são armazenados em dois arquivos de fuso horário. O arquivo de fuso horário padrão é um pequeno arquivo que contém apenas os fusos horários mais comuns para maximizar o desempenho. Se o seu fuso horário não estiver no arquivo padrão, você não terá suporte para o horário de verão até fornecer um caminho para o arquivo completo (maior) por meio da variável de ambiente ORA_TZFILE
.
Algumas combinações de campo datetime e expressão de valor datetime ou intervalo resultam em ambigüidade. Nesses casos, o banco de dados Oracle retorna UNKNOWN
(consulte os exemplos a seguir para obter informações adicionais).
O campo que você está extrando deve ser um campo de datetime_value_expr
ou interval_value_expr
. Por exemplo, você pode extrair apenas YEAR
, MONTH
e DAY
de um DATE
valor. Da mesma forma, você pode extrair TIMEZONE_HOUR
e TIMEZONE_MINUTE
apenas do TIMESTAMP
WITH
TIME
ZONE
tipo de dados.
Veja também:
-
Guia do administrador do banco de dados Oracle para obter mais informações sobre como definir a
ORA_TZFILE
variável de ambiente -
Oracle Guia de suporte à globalização de banco de dados. Para obter uma lista completa dos nomes das regiões de fuso horário em ambos os arquivos
-
“Aritmética de data / hora / intervalo” para obter uma descrição de
datetime_value_expr
einterval_value_expr
-
Referência do banco de dados Oracle para obter informações sobre as visualizações de desempenho dinâmico
Exemplos
O exemplo a seguir retorna da tabela oe.orders
o número de pedidos feitos em cada mês:
O exemplo a seguir retorna o ano de 1998.
SELECT EXTRACT(YEAR FROM DATE "1998-03-07") FROM DUAL;EXTRACT(YEARFROMDATE"1998-03-07")--------------------------------- 1998
O exemplo a seguir s elege da tabela de amostra hr.employees
todos os funcionários que foram contratados após 1998:
O exemplo a seguir resulta em ambigüidade, então o Oracle retorna UNKNOWN
:
A ambigüidade surge porque o deslocamento numérico do fuso horário é fornecido na expressão e esse deslocamento numérico pode mapear para mais de uma região do fuso horário.