Funções de Data e Hora

As funções de data e hora manipulam dados baseados em DATE e DATETIME.

Função Exemplo Descrição Sintaxe
CONVERT_TZ CONVERT_TZ(Order Date, 'UTC', 'America/Denver') Converte uma expr de valor de data/hora do fuso horário especificado por Old time zone para o fuso horário especificado por New time zone e devolve o valor resultante. CONVERT_TZ(expr, 'Old time zone', 'New time zone')

CURRENT_Date

CURRENT_DATE

Devolve a data atual.

A data é determinada pelo sistema no qual o Oracle BI está a ser executado.

CURRENT_DATE

CURRENT_TIME

CURRENT_TIME(3)

Devolve a hora atual com o número especificado de algarismos de precisão, por exemplo: HH:MM:SS.SSS

Se não for especificado nenhum argumento, a função devolve a precisão por omissão.

CURRENT_TIME(expr)

CURRENT_TIMESTAMP

CURRENT_TIMESTAMP(3)

Devolve a indicação de data/hora atual com o número especificado de algarismos de precisão.

CURRENT_TIMESTAMP(expr)

DAYNAME

DAYNAME(Order_Date)

Devolve o nome do dia da semana para uma expressão de data especificada.

DAYNAME(expr)

DAYOFMONTH

DAYOFMONTH(Order_Date)

Devolve o número correspondente ao dia do mês para uma expressão de data especificada.

DAYOFMONTH(expr)

DAYOFWEEK

DAYOFWEEK(Order_Date)

Devolve um número entre 1 e 7 correspondente ao dia da semana para uma expressão de data especificada. Por exemplo, 1 corresponde sempre a domingo, 2 corresponde a segunda-feira, e assim sucessivamente, até sábado que devolve 7.

DAYOFWEEK(expr)

DAYOFYEAR

DAYOFYEAR(Order_Date)

Devolve um número entre 1 e 366 correspondente ao dia do ano para uma expressão de data especificada.

DAYOFYEAR(expr)

DAY_OF_QUARTER

DAY_OF_QUARTER(Order_Date)

Devolve um número (entre 1 e 92) correspondente ao dia do trimestre para uma expressão de data especificada.

DAY_OF_QUARTER(expr)

HOUR

HOUR(Order_Time)

Devolve um número (entre 0 e 23) correspondente à hora para uma expressão de hora especificada. Por exemplo, 0 corresponde a 12 a.m. e 23 corresponde a 11 p.m.

HOUR(expr)

MINUTE

MINUTE(Order_Time)

Devolve um número (entre 0 e 59) correspondente ao minuto para uma expressão de hora especificada.

MINUTE(expr)

MONTH

MONTH(Order_Time)

Devolve o número (entre 0 e 12) correspondente ao mês para uma expressão de data especificada.

MONTH(expr)

MONTHNAME

MONTHNAME(Order_Time)

Devolve o nome do mês para uma expressão de data especificada.

MONTHNAME(expr)

MONTH_OF_QUARTER

MONTH_OF_QUARTER(Order_Date)

Devolve o número (entre 1 e 3) correspondente ao mês no trimestre para uma expressão de data especificada.

MONTH_OF_QUARTER(expr)

NOW

NOW()

Devolve a indicação de data/hora atual. A função NOW é equivalente à função CURRENT_TIMESTAMP.

NOW()

QUARTER_OF_YEAR

QUARTER_OF_YEAR(Order_Date)

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

QUARTER_OF_YEAR(expr)

SECOND

SECOND(Order_Time)

Devolve o número (entre 0 e 59) correspondente aos segundos para uma expressão de hora especificada.

SECOND(expr)

TIMESTAMPADD

TIMESTAMPADD(SQL_TSI_MONTH, 12,Time."Order Date")

Acrescenta um número especificado de intervalos a uma indicação de data/hora e devolve uma indicação de data/hora única.

As opções do intervalo 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

TIMESTAMPADD(interval, expr, timestamp)

TIMESTAMPDIFF

TIMESTAMPDIFF(SQL_TSI_MONTH, Time."Order Date",CURRENT_DATE)

Devolve o número total de intervalos especificados entre duas indicações de data/hora.

Utilize os mesmos intervalos que TIMESTAMPADD.

TIMESTAMPDIFF(interval, expr, timestamp2)

WEEK_OF_QUARTER

WEEK_OF_QUARTER(Order_Date)

Devolve um número (entre 1 e 13) correspondente à semana do trimestre para a expressão de data especificada.

WEEK_OF_QUARTER(expr)

WEEK_OF_YEAR

WEEK_OF_YEAR(Order_Date)

Devolve um número (entre 1 e 53) correspondente à semana do ano para a expressão de data especificada.

WEEK_OF_YEAR(expr)

YEAR

YEAR(Order_Date)

Devolve o ano para a expressão de data especificada.

YEAR(expr)

Sugestões sobre a Utilização de Funções de Data

Seguem-se algumas sugestões sobre como obter os melhores resultados ao utilizar funções de data nos seus livros para calcular períodos fiscais, converter cadeias de caracteres em datas, mostrar uma data e hora num fuso horário específico e calcular diferenças ao longo do tempo.

Calcular o ano fiscal, o trimestre fiscal e o mês fiscal:

Normalmente, as áreas de atividade têm uma dimensão de tempo, pelo que pode utilizar os períodos pré-configurados, como trimestre fiscal, mês fiscal e semana fiscal. Se tiver apenas um campo de data, pode calcular estes períodos utilizando funções de data.

Este exemplo calcula o trimestre fiscal:

'FY'||cast(YEAR(TIMESTAMPADD(SQL_TSI_MONTH, 7,<date field>)) as char)||'Q'||cast(QUARTER(TIMESTAMPADD(SQL_TSI_MONTH, 7,<same date field>)) as char)

Este exemplo calcula o ano fiscal e o mês fiscal:

'FY'||cast(YEAR(TIMESTAMPADD(SQL_TSI_MONTH, 7,<date field>)) as char)||cast(MONTHNAME(<same date field>) as char)

Notas:

  • || concatena valores.
  • cast (xxx(date) as char) extrai uma parte de um campo de data.
  • TIMESTAMPADD adiciona (ou subtrai) períodos de uma data. Este exemplo utiliza o valor do parâmetro SQL_TSI_MONTH para acrescentar meses.

Os cálculos acima funcionam bem em tabelas, mas quando utilizados em filtros, o espaçamento entre os valores devolvidos poderá parecer estranho. Neste caso, utilize um cálculo mais simples mas mais complexo com base nestes exemplos:

'FY'||evaluate ('to_char(%1,%2)'as char,(EVALUATE('add_months(%1,%2)' as date,<date field>,7)),'YY')||'-Q'||evaluate ('to_char(%1,%2)'as char,(EVALUATE('add_months(%1,%2)' as date,<same date field>,7)),'Q')
'FY'||evaluate ('to_char(%1,%2)'as char,(EVALUATE('add_months(%1,%2)' as date,<date field>,7)),'YY')||'-'||evaluate ('to_char(%1,%2)'as char,<same date field>,'MON')

Converter uma cadeia de caracteres numa data:

O Oracle Analytics cria o perfil dos seus dados e fornece recomendações de enriquecimento para extrair e converter datas. Se precisar de converter uma cadeia de caracteres numa data, utilize estas sugestões.
  • No designer do livro, navegue no painel de dados para a coluna que pretende converter e, em seguida, clique com o botão direito do rato e selecione Converter em Data. Configure a data e, em seguida, clique em Acrescentar Passo.

  • No designer do livro, navegue no painel de dados para a coluna que pretende converter e, em seguida, clique com o botão direito do rato e selecione Editar. Configure a data e, em seguida, clique em Acrescentar Passo.

    Na caixa de texto que contém o nome da sua coluna a azul, insira To_DateTime( antes do nome da coluna e, em seguida, acrescente o formato de data que pretende utilizar após o nome da coluna, seguido de ). Depois, clique em Acrescentar Passo.
    Segue-se a descrição de GUID-ADBD035B-A62A-4DED-8768-553365BAABFE-default.png
    .png

    Quando utiliza a opção Editar para criar a sua função de conversão de data, também pode utilizar Allow_Variable_Digits para processar valores de colunas com números de um ou dois dígitos e argumentos Null_On_Error para excluir linhas que não correspondam ao padrão obrigatório. Consulte também REPLACE e CAST para formas alternativas de processar dados que não correspondem ao padrão obrigatório.

    Como alternativa à utilização de To_DateTime(), utilize CAST() para alterar o tipo de dados de um valor. Por exemplo, CAST(SalesDate AS DATE).

    Adicionalmente, utilize a opção Substituir. No designer do livro, navegue no painel de dados para a coluna que pretende converter e, em seguida, clique com o botão direito do rato e selecione Substituir. Configure o tipo de substituição pretendido e, em seguida, clique em Acrescentar Passo.

Mostrar um campo de data e hora num fuso horário específico:

Utilize a função NEW_TIME na base de dados em conjunto com EVALUATE. Por exemplo:

evaluate ('new_time(%1,%2,%3)' as char, "DV - Pipeline and Forecast"."Opportunity"."Last Updated Date",'GMT','AST')

Certifique-se de que o campo de data inclui o componente de hora.

Calcular a diferença ao longo do tempo:

Para mostrar a diferença em número e percentagem entre hoje e ontem, crie cálculos com base nestes exemplos:
  • Calcular uma medida até ontem: filter (Measure using date <= TIMESTAMPADD(SQL_TSI_DAY,-1,CURRENT_DATE))
  • Calcular a diferença: Measure - filter (Measure using date <= TIMESTAMPADD(SQL_TSI_DAY,-1,CURRENT_DATE))
  • Calcular a percentagem de diferença: 1-(filter (Measure using date <= TIMESTAMPADD(SQL_TSI_DAY,-1,CURRENT_DATE))/Measure display as percentage

Notas:

  • Estes exemplos utilizam SQL_TSI_DAY, mas em alternativa pode utilizar WEEK e MONTH, semana após semana e mês após mês.
  • Estes exemplos funcionam com um calendário normal ou natural. Se precisar de meses e trimestres fiscais, utilize variáveis do repositório nos seus cálculos em vez de TIMESTAMPADD. Em alternativa, combine com a sugestão Calcular o ano fiscal, o trimestre fiscal e o mês fiscal.
  • Algumas áreas de atividade incluem medidas X Anterior pré-calculadas, como PY (ano anterior), PQ (trimestre anterior), que podem ser utilizadas para calcular as diferenças ao longo do tempo.
  • Em alternativa, pode utilizar as funções de Séries de Tempo: AGO, PERIODROLLING e TODATE. Consulte Funções de Séries de Tempo.