Imprimir      Abrir a versão em PDF da Ajuda on-line


Tópico anterior

Próximo tópico

Funções de data/hora de calendário

As funções de data/hora de calendário manipulam dados nos tipos de dados para data, hora e marcador de data/hora. (O tipo de dados de marcador de data/hora é uma combinação de data e hora.)

Todas as funções de data são compatíveis com ISO 8601. Isso afeta especialmente funções como Week_Of_Year e Week_Of_Quarter nas quais a semana do ano inicial é a primeira semana que inclua uma quinta-feira. Para obter informações detalhadas sobre como as funções são calculadas, consulte o padrão ISO 8601.

Current_Date

Retorna a data atual. A data é determinada pelo computador. O valor não contém um componente de hora.

Sintaxe:

CURRENT_DATE

Current_Time

Retorna a hora atual. A hora é determinada pelo computador. O valor não contém um componente de data.

Observação: esta função obtém a hora atual no momento em que o relatório é executado. Usando esta função com uma área do assunto de análise evita que o relatório seja armazenado em cache, o que reduz o desempenho.

Sintaxe:

CURRENT_TIME (n)

em que:

n

Qualquer número inteiro que representa o número de dígitos de precisão com o qual serão exibidos os segundos fracionários. O argumento é opcional; a função retorna a precisão padrão quando nenhum argumento é especificado.

Current_TimeStamp

Retorna o marcador de data/hora atuais. O timestamp é determinado pelo computador.

Observação: esta função obtém a hora atual no momento em que o relatório é executado. Usando esta função com uma área do assunto de análise evita que o relatório seja armazenado em cache, o que reduz o desempenho.

Sintaxe:

CURRENT_TIMESTAMP (n)

em que:

n

Qualquer número inteiro que representa o número de dígitos de precisão com o qual serão exibidos os segundos fracionários. O argumento é opcional; a função retorna a precisão padrão quando nenhum argumento é especificado.

Day_Of_Quarter

Retorna um número (entre 1 e 92) correspondente ao dia do trimestre da data especificada.

Sintaxe:

DAY_OF_QUARTER (date_expression)

em que:

date_expression

Qualquer expressão avaliada como uma data.

DayName

Retorna o nome do dia da semana (em inglês) de uma data especificada.

Sintaxe:

DAYNAME (date_expression)

em que:

date_expression

Qualquer expressão avaliada como uma data.

DayOfMonth

Retorna o número correspondente ao dia do mês de uma data especificada.

Sintaxe:

DAYOFMONTH (date_expression)

em que:

date_expression

Qualquer expressão avaliada como uma data.

DayOfWeek

Retorna um número entre 1 e 7 correspondente ao dia da semana de uma data especificada. O número 1 corresponde ao domingo e o número 7 ao sábado.

Sintaxe:

DAYOFWEEK (date_expression)

em que:

date_expression

Qualquer expressão avaliada como uma data.

DayOfYear

Retorna o número (entre 1 e 366) correspondente ao dia do ano de uma data especificada.

Sintaxe:

DAYOFYEAR (date_expression)

em que:

date_expression

Qualquer expressão avaliada como uma data.

Hour

Retorna um número (entre 0 e 23) correspondente à hora de um tempo especificado. Por exemplo, 0 corresponde a 0h e 23 corresponde a 23h.

Sintaxe:

HOUR (time_expression)

em que:

time_expression

Qualquer expressão avaliada como um tempo.

Minute

Retorna um número (entre 0 e 59) correspondente ao minuto de um tempo especificado.

Sintaxe:

MINUTE (time_expression)

em que:

time_expression

Qualquer expressão avaliada como um tempo.

Month

Retorna o número (entre 1 e 12) correspondente ao mês de uma data especificada.

Sintaxe:

MONTH (date_expression)

em que:

date_expression

Qualquer expressão avaliada como uma data.

Month_Of_Quarter

Retorna o número (entre 1 e 3) correspondente ao mês do trimestre de uma data especificada.

Sintaxe:

MONTH_OF_QUARTER (date_expression)

em que:

date_expression

Qualquer expressão avaliada como uma data.

MonthName

Retorna o nome do mês (em inglês) de uma data especificada.

Sintaxe:

MONTHNAME (date_expression)

em que:

date_expression

Qualquer expressão avaliada como uma data.

Now

Retorna o marcador de data/hora atuais. A função NOW equivale à função CURRENT_TIMESTAMP.

Observação: esta função obtém a hora atual no momento em que o relatório é executado. Usando esta função com uma área do assunto de análise evita que o relatório seja armazenado em cache, o que reduz o desempenho.

Sintaxe:

NOW ()

Quarter_Of_Year

Retorna o número (entre 1 e 4) correspondente ao trimestre do ano de uma data especificada.

Sintaxe:

QUARTER_OF_YEAR (date_expression)

em que:

date_expression

Qualquer expressão avaliada como uma data.

Second

Retorna o número (entre 0 e 59) correspondente aos segundos de um tempo especificado.

Sintaxe:

SECOND (time_expression)

em que:

time_expression

Qualquer expressão avaliada como um tempo.

TimestampAdd

A função TimestampAdd adiciona um número especificado de intervalos a um marcador de data/hora específico. Um único marcador de data/hora é retornado.

Sintaxe:

TimestampAdd (intervalo, expressão_inteira, expressão_marcador_data/hora)

em que:

intervalo

O intervalo especificado. Os valores válidos são:

SQL_TSI_SECOND

SQL_TSI_MINUTE

SQL_TSI_HOUR

SQL_TSI_DAY

SQL_TSI_WEEK

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_YEAR

expressão_de_inteiro

Qualquer expressão avaliada como um número inteiro. Esse é o número de intervalos a ser adicionado.

expressão_de_marcador_de_data/hora

O marcador de data/hora é usado como a base do cálculo.

Uma expressão de número inteiro nulo ou uma expressão de marcador de data/hora nulo transmitida para essa função resultará em valor de retorno nulo.

No cenário mais simples, esta função apenas adiciona o valor do número inteiro especificado (expressão_inteira) ao componente apropriado do marcador de data/hora, com base no intervalo. Adicionar uma semana significa adicionar sete dias, e adicionar um trimestre significa adicionar três meses. Um valor inteiro negativo resulta em subtração (voltando no tempo).

Um overflow do componente especificado (por exemplo, mais de 60 segundos, 24 horas, 12 meses etc.) necessita adicionar um valor apropriado ao componente seguinte. Por exemplo, ao adicionar ao componente de dia de um marcador de data/hora, esta função considera o overflow e leva com conta o número de dias de um mês específico (incluindo anos bissextos, quando fevereiro tem 29 dias).

Ao adicionar ao componente de mês de um marcador de data/hora, esta função verifica se o marcador resultante tem um número de dias suficiente para o componente de dia. Por exemplo, adicionar um mês para 2000-05-31 não resulta em 2000-06-31, porque junho não tem 31 dias. Esta função reduz o componente de dia até o último dia do mês, 2000-06-30 neste exemplo.

Um problema semelhante surge ao adicionar ao componente de ano de um marcador de data/hora que tem um componente de mês fevereiro e um componente de dia 29 (ou seja, último dia de fevereiro em ano bissexto). Se o marcador de data/hora resultante não cair em ano bissexto, a função reduzirá o componente de dia para 28.

Estes são exemplos de função TimestampAdd:

O exemplo de código a seguir requer o marcador de data/hora resultante quando 3 dias são adicionados a 2000-02-27 14:30:00. Como fevereiro de 2000 é um ano bissexto, isso retorna um único marcador de data/hora de 2000-03-01 14:30:00.

TimestampAdd(SQL_TSI_DAY, 3, TIMESTAMP‘2000-02-27 14:30:00’)

O exemplo de código a seguir requer o marcador de data/hora resultante quando 7 meses são adicionados a 1999-07-31 0:0:0. Isso retorna um único marcador de data/hora de 2000-02-29 00:00:00. Observe a redução do componente de dia para 29, porque fevereiro é um mês mais curto.

TimestampAdd(SQL_TSI_MONTH, 7, TIMESTAMP‘1999-07-31 00:00:00’)

O exemplo de código a seguir requer o marcador de data/hora resultante quando 25 minutos são adicionados a 2000-07-31 23:35:00. Isso retorna um único marcador de data/hora de 2000-08-01 00:00:00. Observe a propagação do overflow pelo componente de mês.

TimestampAdd(SQL_TSI_MINUTE, 25, TIMESTAMP‘2000-07-31 23:35:00’)

TimeStampDiff

A função TimestampDiff retorna o número total de intervalos especificados entre dois marcadores de data/hora.

Sintaxe:

TimestampDiff (intervalo, expressão_marcador_data/hora1, expressão_marcador_data/hora2)

em que:

intervalo

O intervalo especificado. Os valores válidos são:

SQL_TSI_SECOND

SQL_TSI_MINUTE

SQL_TSI_HOUR

SQL_TSI_DAY

SQL_TSI_WEEK

SQL_TSI_MONTH

SQL_TSI_QUARTER

SQL_TSI_YEAR

timestamp_expression1

O marcador de data/hora a ser subtraído do segundo marcador de data/hora.

timestamp_expression2

O segundo marcador de data/hora. expressão_marcador_data/hora1 é subtraído desse marcador de data/hora para determinar a diferença.

Um parâmetro de expressão de marcador de data/hora nulo transmitido para essa função resultará em valor de retorno nulo.

Esta função determina primeiro o componente de marcador de data/hora correspondente ao parâmetro de intervalo especificado. Por exemplo, SQL_TSI_DAY corresponde ao componente de dia e SQL_TSI_MONTH corresponde ao componente de mês.

Em seguida, a função verifica os componentes de maior ordem de ambos os marcadores de data/hora para calcular o número total de intervalos de cada marcador de data/hora. Por exemplo, se o intervalo especificado corresponder ao componente de mês, a função calculará o número total de meses de cada marcador de data/hora, adicionando o componente de mês e 12 vezes o componente de ano.

Por fim, a função subtrai o total de intervalos do primeiro marcador de data/hora do número total de intervalos do segundo marcador de data/hora.

Ao calcular a diferença em dias, a função trunca os valores de hora das duas expressões de marcador de data/hora e, em seguida, subtrai os valores de data.

Ao calcular a diferença em semanas, a função calcula a diferença em dias e divide por sete antes de arredondar.

Ao calcular a diferença em trimestres, a função calcula a diferença em meses e divide por três antes de arredondar.

Ao calcular a diferença em anos, a função calcula a diferença em meses e divide por doze antes de arredondar.

Função TimestampDiff e exemplo de resultados

O exemplo de código a seguir requer uma diferença em dias entre os marcadores de data/hora 1998-07-31 23:35:00 e 2000-04-01 14:24:00. Isso retorna o valor 610. Observe que o ano bissexto em 2000 resulta em um dia a mais.

TimestampDIFF(SQL_TSI_DAY, TIMESTAMP‘1998-07-31 23:35:00’, TIMESTAMP‘2000-04-01 14:24:00’)

Week_Of_Quarter

Retorna um número (entre 1 e 13) correspondente à semana do trimestre da data especificada.

Sintaxe:

WEEK_OF_QUARTER (date_expression)

em que:

date_expression

Qualquer expressão avaliada como uma data.

Week_Of_Year

Retorna um número (entre 1 e 53) correspondente à semana do ano da data especificada.

Sintaxe:

WEEK_OF_YEAR (date_expression)

em que:

date_expression

Qualquer expressão avaliada como uma data.

Ano

Retorna o ano da data especificada.

Sintaxe:

YEAR (date_expression)

em que:

date_expression

Qualquer expressão avaliada como uma data.

Exemplo:

YEAR (CURRENT_DATE)


Publicado em Setembro de 2017 Copyright © 2005, 2017, Oracle. Todos os direitos reservados. Legal Notices.