Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
pericles_silva
New Contributor III

Formatar a duração do Interval()

Fala ai galera.

Seguinte, possuo uma aplicação que contém a duração de trabalho dos empregados. Como é um legado de mais de 10 anos, existem horas demais e o número fica bem grande de ler. Queria formatá-lo em casas decimais.

Ex: Interval(Now() - (Today()-3650))

Capturar.PNG

Desejado:

Capturar 2.PNG

Att,

Péricles.

1 Solution

Accepted Solutions
Employee
Employee

Re: Formatar a duração do Interval()

Veja se esse atende:

=If(Subfield(Interval(Now() - Today()),':',1)>1000,num(Subfield(Interval(Now() - Today()),':',1),'#.##0'),Subfield(Interval(Now() - Today()),':',1))&':'&

Subfield(Interval(Now() - Today()),':',2)&':'&

Subfield(Interval(Now() - Today()),':',3)

16 Replies
thiago_justen
Valued Contributor III

Re: Formatar a duração do Interval()

Péricles,

Nesse caso basta fazer:

Now()-(Today()-3650)

Ou ainda:

Num (Now()-(Today()-3650))


Abs e Sucesso!

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago
Employee
Employee

Re: Formatar a duração do Interval()

Pesquisei aqui e não achei uma maneira simples de fazer.

Fiz essa versão apenas com manipulação de strings.

=if(len(SubField(Interval(Now()-(Today()-3650),'hhhh:mm:ss'),':',1))<=3,

Interval(Now()-(Today()-3650),'hhhh:mm:ss'),

Left(

SubField(Interval(Now()-(Today()-3650),'hhhh:mm:ss'),':',1),

len(SubField(Interval(Now()-(Today()-3650),'hhhh:mm:ss'),':',1))-3

) &'.'&

Mid(

SubField(Interval(Now()-(Today()-3650),'hhhh:mm:ss'),':',1),

len(SubField(Interval(Now()-(Today()-3650),'hhhh:mm:ss'),':',1))-2

)&':'&Mid(Interval(Now()-(Today()-3650),'hhhh:mm:ss'),1+Index(Interval(1000,'hhhh:mm:ss'),':'))

)

pericles_silva
New Contributor III

Re: Formatar a duração do Interval()

Thiago, bom dia!

No caso o resultado ficou numérico (3650,4523148148). A representação precisa ser de duração. No caso do exemplo precisa estar 87 mil horas.

pericles_silva
New Contributor III

Re: Formatar a duração do Interval()

Clever, bom dia!

Realmente pra esse caso funcionou, porém esqueci de comentar que este número não e absoluto, ou seja, varia de acordo com os filtros.

Testando nesse exato momento as 10:55 AM com o intervalo de hoje "Interval(Now() - Today())" o resultado ficou "0.010:5:27", onde o desejado é "10:55:27".

Employee
Employee

Re: Formatar a duração do Interval()

Bom então teríamos que colocar mais uns "ifs" ai

Estou em cliente agora, tente se consegue melhorar, se não conseguir até a noite eu volto a dar uma olhada

pericles_silva
New Contributor III

Re: Formatar a duração do Interval()

Thiago, eu postei que queria em CASAS DECIMAIS errado. Na verdade o que eu quero é SEPARADOR DE MILHAR nas horas.

Employee
Employee

Re: Formatar a duração do Interval()

Veja se esse atende:

=If(Subfield(Interval(Now() - Today()),':',1)>1000,num(Subfield(Interval(Now() - Today()),':',1),'#.##0'),Subfield(Interval(Now() - Today()),':',1))&':'&

Subfield(Interval(Now() - Today()),':',2)&':'&

Subfield(Interval(Now() - Today()),':',3)

thiago_justen
Valued Contributor III

Re: Formatar a duração do Interval()

Confesso que desisti depois que vi o nível da tua resposta cleveranjos

Dica anotada aqui também

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago
pericles_silva
New Contributor III

Re: Formatar a duração do Interval()

Perfeito. Funcionou!!!!!!

Obrigado!!!