Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
viniciusroteli
Contributor III
Contributor III

Contar Intervalos de Tempo !!!

Boa Tarde !!!

Nunca trabalhei com intervalo de horas e tenho a seguinte situação.

Pessoal tem uma tabela com duas datas como uma agenda.

Campo "Datainicio" 01/12/2015 08:00 e campo  "Datafim" 01/12/2015 10:45

Sempre as datas estarão com intervalo de múltiplos de 15 minutos.

O que preciso saber é quantos intervalos de 15 min tenho de cada Datafim - Datainicio.

O Interval de =Interval([Datafim]-[Datainicio])  é 02:45 nesse caso tenho 11 intervalos de 15 min.

Agradeço.

18 Replies
maiconmello
Creator III
Creator III

ViniciusRoteli‌, será que isso te ajuda ?

//Deixei o script assim

teste:

LOAD * INLINE [

    Horainicio, Horafim

    '19/08/2015 14:00:00', '19/08/2015 17:00:00'

    '10/12/2015 08:00:00', '10/12/2015 11:15:00'

];

Teste1:

NoConcatenate

load date#(Date(Horainicio,'DD/MM/YYYY HH:mm'),'DD/MM/YYYY HH:mm')  as Dataini,

     time#(Time(Horainicio,'HH:mm'),'HH:mm')                        as Horaini,

     time#(Time(Horafim,'HH:mm'),'HH:mm')                           as Horafim Resident teste;

drop Table teste;

Fiz uma expressão da seguinte forma :

=hour(Interval(Horafim - Horaini)) * 60 / 15 +  Minute(Interval(Horafim - Horaini)) / 15

maiconmello
Creator III
Creator III

Segue o QVW .

viniciusroteli
Contributor III
Contributor III
Author

cleveranjos‌ dessa forma ele vai contar só os casos que são criação, mas preciso ignorar o evento quando o mesmo tiver exclusão.

O que tinha feito era exatamente isso mas com um if


if(round({<[Tipo Ação]=-{"EXCLUSAO"}>}(Horafim - Horainicio)*24*4)-round({<[Tipo Ação]=-{"CRIACAO"}>}(Horafim - Horainicio)*24*4)>0,round((Horafim - Horainicio)*24*4), NULL())


Não sei se teia uma forma diferente de fazer.

maiconmello
Creator III
Creator III

Você precisa carregar os excluidos ??? Na carga faz um where tipoacao <> 'Excluído ';

viniciusroteli
Contributor III
Contributor III
Author

Sim,

Eu preciso carregar os Excluídos, pois no fim faço uma contagem dos status 'CRIAÇÃO' E 'EXCLUÍDOS', mas para fazer a contagem dos intervalos de 15 min é só para os casos que não tenham o Status 'EXCLUÍDOS'.

Conforme exemplo acima.

EventoTipo AçãoHora InícioHora FimExpressão
84CRIACAO21/08/2015 21:00:0021/08/2015 21:30:000
84EXCLUSAO21/08/2015 21:00:0021/08/2015 21:30:000
85CRIACAO21/08/2015 22:00:0021/08/2015 22:30:002

depois contar a qtde total de intervalos de 15 min.

paulovendruscol
Creator
Creator

if([Tipo Ação]<>'EXCLUSAO',round((Horafim - Horainicio)*24*4))

ou

Round(SUM({<[Tipo Ação]=-{'EXCLUSAO'}>}(Horafim - Horainicio)*24*4))

Clever_Anjos
Employee
Employee

"dessa forma ele vai contar só os casos que são criação, " Na verdade vai contar os que não são Exceção, existe um "-" antes do "="

viniciusroteli
Contributor III
Contributor III
Author

Sim eu entendi, mas se o evento tiver o tipo ação "EXCLUSAO" é pq esse evento foi cancelado e devo desconsiderar.

o que estou fazendo é isso

if(round({<[Tipo Ação]=-{"CRIACAO"}>}(Horafim - Horainicio)*24*4) - round({<[Tipo Ação]=-{"EXCLUSAO"}>}(Horafim - Horainicio)*24*4)=0,NULL(),round((Horafim - Horainicio)*24*4),)


pois se tiver os 2 a conta vai dar zero e não vou contar, queria saber se existe um outra forma apenas.

paulovendruscol
Creator
Creator

Vinicius,

Não entendi muito bem sua regra de negócio, porém, sua sintaxe está incorreta, deveria ser por exemplo:

if(Round(SUM({<[Tipo Ação]=-{'CRIACAO'}>}(Horafim - Horainicio)*24*4)) - Round(SUM({<[Tipo Ação]=-{'EXCLUSAO'}>}(Horafim - Horainicio)*24*4))=0,'S',round((Horafim - Horainicio)*24*4))

Se você precisa apenas desconsiderar o registro (EXCLUSAO), siga o que postei anteriormente.