![]() |
|
Funções de data/hora de calendárioAs 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_DateRetorna a data atual. A data é determinada pelo computador. O valor não contém um componente de hora. Sintaxe: CURRENT_DATE Current_TimeRetorna 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:
Current_TimeStampRetorna 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:
Day_Of_QuarterRetorna um número (entre 1 e 92) correspondente ao dia do trimestre da data especificada. Sintaxe: DAY_OF_QUARTER (date_expression) em que:
DayNameRetorna o nome do dia da semana (em inglês) de uma data especificada. Sintaxe: DAYNAME (date_expression) em que:
DayOfMonthRetorna o número correspondente ao dia do mês de uma data especificada. Sintaxe: DAYOFMONTH (date_expression) em que:
DayOfWeekRetorna 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:
DayOfYearRetorna o número (entre 1 e 366) correspondente ao dia do ano de uma data especificada. Sintaxe: DAYOFYEAR (date_expression) em que:
HourRetorna 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:
MinuteRetorna um número (entre 0 e 59) correspondente ao minuto de um tempo especificado. Sintaxe: MINUTE (time_expression) em que:
MonthRetorna o número (entre 1 e 12) correspondente ao mês de uma data especificada. Sintaxe: MONTH (date_expression) em que:
Month_Of_QuarterRetorna 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:
MonthNameRetorna o nome do mês (em inglês) de uma data especificada. Sintaxe: MONTHNAME (date_expression) em que:
NowRetorna 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_YearRetorna o número (entre 1 e 4) correspondente ao trimestre do ano de uma data especificada. Sintaxe: QUARTER_OF_YEAR (date_expression) em que:
SecondRetorna o número (entre 0 e 59) correspondente aos segundos de um tempo especificado. Sintaxe: SECOND (time_expression) em que:
TimestampAddA 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:
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’) TimeStampDiffA 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:
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 resultadosO 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_QuarterRetorna um número (entre 1 e 13) correspondente à semana do trimestre da data especificada. Sintaxe: WEEK_OF_QUARTER (date_expression) em que:
Week_Of_YearRetorna um número (entre 1 e 53) correspondente à semana do ano da data especificada. Sintaxe: WEEK_OF_YEAR (date_expression) em que:
AnoRetorna o ano da data especificada. Sintaxe: YEAR (date_expression) em que:
Exemplo: YEAR (CURRENT_DATE) |
Publicado em Setembro de 2017 | Copyright © 2005, 2017, Oracle. Todos os direitos reservados. Legal Notices. |