Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
pericles_silva
Contributor III
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.

Labels (2)
1 Solution

Accepted Solutions
Clever_Anjos
Employee
Employee

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)

View solution in original post

16 Replies
Thiago_Justen_

Péricles,

Nesse caso basta fazer:

Now()-(Today()-3650)

Ou ainda:

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


Abs e Sucesso!

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

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
Contributor III
Contributor III
Author

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
Contributor III
Contributor III
Author

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".

Clever_Anjos
Employee
Employee

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
Contributor III
Contributor III
Author

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

Clever_Anjos
Employee
Employee

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_

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

Dica anotada aqui também

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

Perfeito. Funcionou!!!!!!

Obrigado!!!