Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
No filme "Monstros S/A" os personagens são treinados para assustarem as crianças. Eles ficam lá, à espreita, esperando a hora certa de aterrorizar os pequenos humanos. Em Qlik existe também um cenário onde um pequeno "monstro" fica à espreita para nos assustar. Mas primeiro vamos a um pouco de teoria sobre como datas, horas e intervalos são armazenados em Qlik. Leitura recomendada by hic As funções date() e time() são apenas funções de formatação. Elas não alteram o valor do número que recebem como argumento. Elas apenas aplicam uma "máscara" a um valor de data/hora Se você incluir em um objeto texto a expressão =time(now()) verá algo semelhante a isso Você está vendo apenas a hora:min:seg mas o valor do dia "ainda está lá" esperando para assustar você. Se você incluir em um objeto texto a expressão =date(now()) verá algo semelhante a isso Você está vendo apenas a data mas as horas e minutos continuam lá. |
Várias vezes vemos posts aqui na comunidade de diferenças estranhas quando somam-se ou calculam-se médias de campos data/hora.
Exemplo:
Sum(Aggr(time(DataHoraFim)-time(DataHoraInicio),Atendimento) parece certo não?
Para cada atendimento, calcula-se a diferença entre a data final e data inicial e soma-se para todos os atendimentos.
Mas e se?
Percebeu a diferença? Quando aplica-se um time() a um valor de 34:52:20 a função "arredonda" para 24 horas e mostra apenas 10:52:20, "escondendo" 24 horas no armário. Mas aquelas horas continuam lá e quando somamos ou calculamos média o valor fica distorcido. Você vê um valor, mas valor armazenado é outro, mascarado pelas funções.
Utilize as seguintes regrinhas:
Belo artigo cleveranjos, muito útil.
Obrigado e abraços.
Legal, mas Clever estou com um problemas justamente com datas e não estou conseguindo resolver, fico horas estudando sou novato no qlikview e ainda apanho muito com tudo isso.
Estou tento problemas porque esta trazendo do Oracle datas inferiores a data da variavel tipo na variavel carrega 04/10/216 e vem informação do Oracle tipo do mês 4 exemplo: 11/04/2016
No Oracle a data vem 15/04/2008 14:25:25 e no qlikview a data que esta na variavel 4/10/2016
Tem como dar um help brother??
Quando carrego esse script
//Uso isso para trazer a ultima data carregada no qvd
tmp:
load
max(HIS_DATAHORA) as HIS_DATAHORA
FROM
(qvd);
//variavel para carregar a ultima data na consulta, realizada no banco oracle de onde devo extrair as atualizações diarias
let vData = date(peek('HIS_DATAHORA',0,tmp),'DD/MM/YYYY');
drop table tmp;
//consulta simples para receber as informações e depois concatenar com o qvd
SELECT * FROM HISTORICO H
WHERE
h.his_pro_cod ='CCF'
and h.his_datahora >= '$(vData)'
and rownum <100
;
O mais correto seria ter aberto um tópico.
Acredito que seja como o seu Oracle está interpretando suas Datas na sua Query.
Altere por favor:
1) h.his_datahora >= '$(vData)' para h.his_datahora >= TO_DATE('$(vData)','DD/MM/YYYY')
2) SELECT * FROM HISTORICO // Não use o * inclua somente os campos que vai precisar, acredite você poderá ter problemas no futuro
Valew Clever!