Usar datahoras em expressões

Você pode utilizar expressões para executar cálculos com datas, datahoras e horários:

  • Calcule tempos decorridos, tempo e dias decorridos ou horas decorridas

    Por exemplo, `20141231` - `20141130` retorna 31, o número de dias entre as duas datas.

  • Faça ajustes positivos ou negativos em datas, datahoras ou horários

    Por exemplo, `20141231` - 15 retorna 16 Dez 2014, a data de 15 dias antes.

  • Compare datas, datahoras ou horários

    Por exemplo, `20141231 183000` > `20141231 171500` retorna T (Verdade), porque a primeira datahora é mais recente do que a segunda datahora.

Funções de data e hora

Para ajudá-lo a trabalhar com dados de datahora, o Analytics fornece uma variedade de funções de data e hora que executam diversas tarefas úteis. Você pode usar essas funções ao criar expressões de datahora.

As funções de datahora, agrupadas por tarefa, são exibidas na tabela a seguir. Você pode ver a mesma lista de funções se filtrar a lista suspensa Funções no Construtor de expressões por Data e hora.

Tarefa executada

Funções

Retorna o número de dias decorridos (idade) entre uma data e uma data limite ou a data atual ou o número de dias decorridos entre quaisquer duas datas.

AGE( )

Calcula uma data, um fim de mês ou um número específico de meses anteriores a uma data

GOMONTH( ), EOMONTH( )

Identifica o dia da semana, ou o mês do ano, de uma data

CDOW( ), CMOY( )

Retorna um valor numérico (1 a 7) representando o dia da semana para uma data

DOW( )

Extrai os dados ou a hora de um valor de datahora

DATE( ), TIME( )

Extrai dia, mês, ano, hora, minutos ou segundos de um valor de datahora

DAY( ), MONTH( ), YEAR( ), HOUR( ), MINUTE( ), SECOND( )

Converte valores de datahora seriais, valores de caractere ou valores de datahora numéricos para valores de datahora normais com um tipo de dados de datahora

STOD( ), STODT( ), STOT( ), CTOD( ), CTODT( ), CTOT( )

Retorna a data, datahora ou hora atual do sistema operacional.

TODAY( ), DATETIME( ), NOW( )

Uma quantidade de tempo em relação a um ponto no tempo

Ao trabalhar com datahoras em expressões, é importante diferenciar entre quantidades de tempo e pontos no tempo, pois a diference exige a criação de tipos diferentes de expressões.

Horários

O valor de tempo 08:30:00 pode ser uma quantidade de tempo (8 horas e 30 minutos) ou um ponto no tempo (08:30:00 AM da manhã).

Nota

O Formato de exibição de hora (Ferramentas > Opções > Data e hora) no primeiro exemplo é hh:mm:ss e no segundo exemplo é hh:mm:ss PM. Ambos os exemplos envolvem cálculos de datahora serial, que são explicados nas seções seguintes.

Quantidade de tempo

Se você subtrair uma hora de outra hora, o resultado será um tempo decorrido, que é uma quantidade de tempo.

Retorna 01:15:00 (1 hora, 15 minutos, 0 segundos):

STOT(`T083000` - `T071500`)

Ponto no tempo

Se você adicionar ou subtrair um número de uma hora, o resultado será um ajuste positivo ou negativo que criar outro ponto no tempo, anterior ou posterior à hora inicial.

Retorna 07:00:00 AM:

`T083000` - (1.00000000/24*1,5)

Datas

Quantidade de tempo

Se você subtrair uma data de outra data, o resultado será o número de dias decorridos, que é uma quantidade de tempo.

Retorna 31, o número de dias entre as duas datas:

`20141231` - `20141130`

Ponto no tempo

Se você adicionar ou subtrair um número de uma data, o resultado será outro ponto no tempo, posterior ou anterior à data inicial.

Retorna 30 Nov 2014, a data 31 dias antes:

`20141231` - 31

Expressões de datahora válidas e inválidas

Expressões de datahoras englobam um número de combinações possíveis de subtipos de datahora (data, datahora e horário) e operador. Nem todas as combinações são expressões válidas. Por exemplo, você pode subtrair uma data de outro para descobrir o número de dias decorridos, mas você não pode adicionar duas datas porque a operação é ilógica. Você pode, no entanto, adicionar um número a uma data para produzir uma data subsequente.

As seguintes regras se aplicam a expressões de datahora:

  • Subtrair ou comparar datahoras Qualquer combinação de data, datahora ou valores de horário pode ser utilizada em uma operação de subtração ou comparação.

  • Adicionar ou subtrair números e datahoras Números inteiros, mistos e frações podem ser subtraídos ou adicionados aos valores de data, datahora ou hora.

  • Adicionar datahoras Não é possível somar valores de data, datahora ou hora entre si.

    Se você precisar adicionar quantidades de tempo, como horas trabalhadas em uma semana, você pode usar as funções do Analytics para extrair as partes de hora, minutos e segundos de horários como valores numéricos. Você pode realizar cálculos nestes valores numéricos. Para obter mais informações, consulte Usando funções para adicionar quantidades de tempo.

  • Comparar datahoras e números Valores de data, datahora ou hora não podem ser comparados a números.

A tabela abaixo sumariza as combinações possíveis com expressões de datahora e indica se cada combinação é válida ou inválida – isto é, se ela pode ser processada pelo Analytics.

Nota

Mesmo que uma expressão seja válida, pode ser que ela nem sempre sirva para um propósito analítico útil. Por exemplo, o Analytics processará a expressão Data_Término > Data_Início, mas o resultado será sempre Verdadeiro (T) e comparar uma data a uma hora não serve a nenhum propósito lógico.

 

Valor de data

Valor de datahora

Valor de hora

Número

Valor de data

Válido:

Subtrair

Comparar

Válido:

Subtrair

Comparar

Válido:

Subtrair

Comparar

Válido:

Subtrair

Adicionar

Inválido:

Adicionar

Inválido:

Adicionar

Inválido:

Adicionar

Inválido:

Comparar

Valor de datahora

Válido:

Subtrair

Comparar

Válido:

Subtrair

Comparar

Válido:

Subtrair

Comparar

Válido:

Subtrair

Adicionar

Inválido:

Adicionar

Inválido:

Adicionar

Inválido:

Adicionar

Inválido:

Comparar

Valor de hora

Válido:

Subtrair

Comparar

Válido:

Subtrair

Comparar

Válido:

Subtrair

Comparar

Válido:

Subtrair

Adicionar

Inválido:

Adicionar

Inválido:

Adicionar

Inválido:

Adicionar

Inválido:

Comparar

Tipos de dados retornados por expressões de datahora

O tipo de dados do resultado devolvido por uma expressão de datahora depende dos valores e dos operadores na expressão:

Expressão de datahora

Tipo de dados do resultado

Subtração (apenas valores de datahora)

Qualquer combinação de data, datahora ou valores usados em uma operação de subtração.

Numérico

Uma data serial, uma datahora serial ou hora serial

Para obter mais informações, consulte Datahoras seriais.

Adição ou subtração (valores de datahora e números)

Número inteiro, misto ou fracional subtraído ou adicionado à data, datahora ou valor de horário.

Datahora

Um subtipo de data, datahora ou hora do tipo de dados de Datahora

Comparação (apenas valores de datahora)

Qualquer combinação de data, datahora ou valores usados em uma operação de comparação.

Lógico

T (Verdadeiro) ou F (Falso)

Formato dos literais de datahora

  • Valores de datahora você pode usar qualquer combinação de formatos de data, separador e hora listados na tabela abaixo

    A data deve preceder a hora e um separador deve ser usado entre os dois. Os separadores válidos são um único espaço em branco ou as letras "t" ou "T".

  • Valores de tempo você deve especificar as horas usando o formato de 24 horas

    Os ajustes do horário universal coordenado (UTC) devem ser precedidos por um sinal de mais (+) ou de menos (-).

    Exemplos de formatos

    Valores literais dos exemplos

    AAAAMMDD

    `20141231`

    AAMMDD

    `141231`

    AAAAMMDD hhmmss

    `20141231 235959`

    AAMMDDthhmm

    `141231t2359`

    AAAAMMDDThh

    `20141231T23`

    AAAAMMDD hhmmss+/-hhmm

    (ajuste UTC)

    `20141231 235959-0500`

    AAMMDD hhmm+/-hh

    (ajuste UTC)

    `141231 2359+01`

    thhmmss

    `t235959`

    Thhmm

    `T2359`

    Nota

    Não use somente hh no formato de hora principal com dados que têm um ajuste UTC. Por exemplo, evite: hh+hhmm. Os resultados podem ser não confiáveis.

     

Usando funções para adicionar quantidades de tempo

Você não pode adicionar valores de hora diretamente uns aos outros no Analytics. No entanto, você pode usar as funções do Analytics para extrair as partes de hora, minutos e segundos de horas como valores numéricos e, em seguida, realizar cálculos sobre estes valores numéricos.

O exemplo dos dados de cronograma abaixo ilustra esta abordagem utilizando horas e minutos.

Vários campos calculados são necessários para produzir os cálculos:

Nome de campo calculado

Expressão

Descrição

Transcorrido

STOT(Hora_Término - Hora_Início)

Uma operação de subtração que calcula as horas trabalhadas naquele dia. A função STOT( ) converte os resultados de valores de tempo seriais para valores de tempo regulares.

Horas

HOUR(Transcorrida)

A parte de hora extraída como valor numérico do valor Transcorrido.

Minutos

MINUTE(Transcorrido)

A parte de minutos extraída como valor numérico do valor Transcorrido.

(Para propósitos de exibição. Não é necessário para o cálculo.)

Frações de Hora

MINUTE(Transcorrido)/60,000

A parte de minutos extraída como valor numérico do valor Transcorrido e calculada como porção fracional decimal de 60 minutos.

Horas+Frações de Hora

Horas + Frações_de_Hora

As horas numéricas e frações de horas adicionadas juntamente.

Como passo final, você pode totalizar o campo Horas+Frações de Horas para calcular as horas totais para a semana:

Fazendo ajustes positivos ou negativos em datas, datahoras ou horários

Você pode fazer um ajuste negativo ou positivo em uma data, datahora ou valores de tempo como, por exemplo, adicionar ou subtrair 15 dias ou adicionar ou subtrair 3 horas.

Fazer um ajuste positivo ou negativo a uma data

Fazer um ajuste negativo ou positivo em uma data é bastante simples. Você adiciona ou subtrai o número necessário de dias para calcular uma data com base na outra.

Retorna 15 Jan 2015:

`20141231` - 15

Retorna 16 Dez 2014:

`20141231` - 15

Fazer um ajuste positivo ou negativo a uma datahora ou hora

Fazer um ajuste negativo ou positivo em uma datahora ou valor de hora é um pouco menos simples do que fazer um ajuste em uma data.

Você não pode adicionar valores de tempo um para o outro diretamente ou um valor de tempo para um valor de datahora. Por exemplo, se você tentar fazer um ajuste positivo de 3 horas usando qualquer uma das expressões a seguir, você obterá um erro.

Retorna o erro Incongruência do tipo de expressão:

`t120000` + `t030000`

Retorna o erro Incongruência do tipo de expressão:

`20141231 235959` + `t030000`

Faça um ajuste positivo usando o equivalente em hora serial

Você pode criar uma expressão válida adicionando o tempo serial equivalente a 3 horas (0,125), mas a criação manual dessas expressões pode ser complicada, já que exige que você saiba qual é o equivalente do tempo serial.

Retorna 15:00:00:

`t120000` + 0,125

Retorna 01 Jan 2015 02:59:59:

`20141231 235959` + 0,125

Fazer um ajuste negativo com um resultado de datahora serial ou hora

Fazer um ajuste negativo em uma datahora ou valor de tempo é mais fácil, porém, o resultado é um valor serial de datahora ou valor serial de tempo que deve ser convertido para um valor de tempo ou datahora regular para se tornar mais legível.

Retorna 0,37500000000000 :

`t120000` - `t030000`

Retorna 09:00:00 :

STOT(`t120000` - `t030000`)

Criar um campo calculado para fazer ajustes positivos ou negativos com mais facilidade

O método a seguir permite a você fazer ajustes negativos ou positivos em valores de datahora ou tempo mais facilmente:

  1. Crie um campo calculado que calcula o tempo serial equivalente à quantidade de tempo que você quer adicionar ou subtrair.

    Retorna 0,10416668 , a hora serial de 2-1/2 horas:

    (1,00000000/24*2,5)

    Você deve especificar '1' com múltiplos zeros em casas decimais para assegurar que o Analytics não arredondará os resultados.

    Você pode mudar o número pelo qual você multiplica para obter um número apropriado de horas: (1.00000000/24*1) , (1.00000000/24*8) , (1.00000000/24*10.25) , etc.

  2. No mesmo campo calculado, adicione ou subtraia o tempo serial calculado de ou para o tempo fonte ou valor de datahora.

    Retorna valores no campo + 2-1/2 horas:

    <campo hora ou datahora> + (1,00000000/24*2,5)
  3. Se quiser adicionar ou subtrair dias e hora em um valor de datahora, inclua um número apropriado de dias no cálculo.

    Retorna valores no campo + 2 dias e 2-1/2 horas:

    <campo datahora> + 2 + (1,00000000/24*2,5)

Exemplos de expressões de datahora

As tabelas a seguir oferecem exemplos de expressões de datahora válidas:

Nota

Em vários exemplos, os resultados são retornados como datahoras seriais – isto é, um valor de data, datahora ou hora representado por como inteiro ou parte fracionária decimal de 24 horas.

Você pode usar as funções STOD( ), STODT( ) e STOT( ) para converter resultados de datahora seriais em valores de datahora regulares. Para obter mais informações, consulte Datahoras seriais.

Calcule tempos decorridos, tempo e dias decorridos ou horas decorridas

Expressão

Resultado

`20141231` - `20141130`

31

Os dias transcorridos entre as duas datas

Data_de_Término - Data_de_Início

Os dias transcorridos entre os valores da Data_de_Término e da Data_de_Início

`20141231 235959` - `20141130 114530`

31,51005787037037

Os dias e horas transcorridos entre as duas datahoras, com a hora expressa como hora serial

STRING(INT(`20141231 235959` - `20141130 114530`);5) + " " + TIME(STOT(MOD(`20141231 235959` - `20141130 114530`; 1)))

31 12:14:29

Os dias e horas transcorridos entre as duas datahoras no exemplo acima, expressos como dias, horas, minutos e segundos.

Presume um formato atual de exibição de hora do Analytics como hh:mm:ss

(`20141231 235959` - `20141130 114530`) * 24

756,24138888888888

As horas transcorridas entre as duas datahoras no exemplo acima, expressas como horas e uma fração de uma hora

Datahora_Término - Datahora_Início

Os dias e horas transcorridos entre os valores de Datahora_Término e Datahora_Início, com a hora expressa como hora serial

STRING(INT(Datahora_Término - Datahora_Início); 5) + " " + TIME(STOT(MOD(Datahora_Término - Datahora_Início; 1)))

Os dias e horas transcorridos entre os valores de Término_Datahora e Início_Datahora, expressos como dias, horas, minutos e segundos

`T235959` - `T114530`

0,51005787037037

O tempo transcorrido entre as duas horas, expressado como uma hora serial

STOT(0,51005787037037)

12:14:29

A hora serial no exemplo acima convertida para um valor de hora, usando o formato de exibição de hora do Analytics atual

STOT(`T235959` - `T114530`)

12:14:29

O tempo transcorrido entre as duas horas, expresso como uma hora usando o atual formato de exibição de horas do Analytics

Hora_de_Término - Hora_de_Início

As horas transcorridas entre os valores da Hora_de_Término e a Hora_de_Início, expressas como uma hora serial

Faça ajustes positivos ou negativos em datas, datahoras ou horários

Expressão

Resultado

Data_vencimento + 15

Os valores no campo Data_vencimento são aumentados em 15 dias

`20141231` - 15

16 Dez 2014

A data diminuiu em 15 dias. Pressupõe um formato de exibição de data atual do Analytics como DD MMM AAAA

`20141231 235959` + (1,00000000/24*1,5)

01 Jan 2015 01:29:59

A datahora mais 1,5 horas

`20141231 235959` - (1,00000000/24*1,5)

31 Dez 2014 22:29:59

A datahora menos 1,5 horas

STODT(`20141231 235959` - `T013000`)

31 Dez 2014 22:29:59

A datahora menos 1,5 horas

`20141231 235959` + 2 + (1,00000000/24*1,5)

03 Jan 2015 01:29:59

A datahora mais 2 dias e 1,5 horas

`20141231 235959` - 2 - (1,00000000/24*1,5)

29 Dez 2014 22:29:59

A datahora menos 2 dias e 1,5 horas

`t235959` + (1,00000000/24*1,5)

01:29:59

O tempo mais 1,5 horas

`T173000` - (1,00000000/24*1,5)

16:00:00

O tempo menos 1,5 horas

STOT(`T173000` - `T013000`)

16:00:00

O tempo menos 1,5 horas

STOT(STOT(`T173000` - `T013000`) - `T010000`)

15:00:00

A hora menos 1,5 horas, menos 1 outra hora

Compare datas, datahoras ou horários

Expressão

Resultado

`20141231` > `20141230`

T (Verdadeiro)

Data_vencimento <= `20141231`

Todos os valores no campo Data_vencimento menores ou iguais a 31 Dez 2014

Data_pagamento > Data_vencimento

Todos os valores no campo Data_pagamento posteriores à data de vencimento

CTOD(DATE(Carimbo_de_data_pagamento; "AAAAMMDD"); "AAAAMMDD") > Data_vencimento

Todos os valores no campo Carimbo_de_data_pagamento posteriores à data de vencimento

Para comparar valores de datahora e data, a data é primeiro extraída como valor de caractere dos valores de datahora no campo Carimbo_de_hora_pagamento e, em seguida, convertida para o valor de data para que seja comparado com a data de vencimento.

Para garantir que os formatos correspondem, formatos idênticos são especificados para o parâmetro de formato DATE( ) (o formato de saída) e o parâmetro de formato CTOD ( ) (o formato de entrada).

Hora_login > `t100000`

Todos os valores no campo Hora_login são posteriores a 10:00:00

Expressões de datahora que usam funções de conversão

Expressão

Resultado

STOT(CTOT("t120000") - CTOT("t090000") )

03:00:00

O tempo transcorrido entre os valores de hora de dois caracteres

Os valores de hora do caractere são primeiro convertido para valores de hora regulares, de modo que possam ser usados em uma operação de subtração. A hora serial numérica resultante da operação de subtração será então convertida em um valor de hora regular.

CTOT(TIME(`20141231 125959`)) < `T235959`

T (Verdadeiro)

A hora é extraída primeiro como valor de caractere do valor de datahora e, em seguida, convertida para um valor de hora para que possa ser comparada com 23:59:59.