Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rodrigo Ribeiro_28417

Calcular diferença entre coluna Timestamp

Recommended Posts

Tenho uma tabela de nome (ATENDIMENTOS)que possui 2 colunas timestamp a primeira coluna é (HORA_INICIO) e a segunda é (HORA_FIM) a primeira grava a data e hora que o usuario criou o atendimento e a segunda grava a data e hora que fechou o chamado, agora estou com duvidas de como fazer o calculo de intervalor de tempo entre abertura e fechamento,

 

gostaria de saber se é possivel fazer por trigger inserindo a informação em uma coluna que tem o nome de (TMA) na propria tabela

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Motta é isso mesmo, testei aqui e deu certo, agora vou estudar em como colocar ele no datagrid do sistema

 

 

Fiz teste funcionou, não quis abrir novo topico e resolvi usar esse, tentei criar uma trigger para inserir a diferença de tempo e não funciona apresenta erro

 

 

 

CREATE TRIGGER `tduration` AFTER INSERT ON `atendimentos` FOR EACH ROW

BEGIN

INSERT INTO atendimento SET tma = TIMEDIFF(NEW.hora_fim, NEW.hora_inicio);

END

 

quando tento fechar o chamado para que ele grave da erro

 

Registro NÃO foi editado. Can't update table 'atendimentos' in stored function/trigger because it is already used by statement which invoked this stored function/trigger

 

table

 

atendimentos

 

colunas: hora_inicio / hora_fim / tma

 

fiz uma trigger para pegar a hora_inicio e adiciona na coluna, uma trigger para hora_fim (before update) e outra tigger para o tma (after update);

 

mostra esse erro

 

Registro NÃO foi editado. Can't update table 'atendimentos' in stored function/trigger because it is already used by statement which invoked this stored function/trigger

Compartilhar este post


Link para o post
Compartilhar em outros sites

creio que seria algo assim : (before e atribuição direta)

 

 

CREATE TRIGGER `tduration` before INSERT ON `atendimentos` FOR EACH ROW 
BEGIN 
  if NEW.tma is null then
    NEW.tma = TIMEDIFF(NEW.hora_fim, NEW.hora_inicio);
  end if; 
END

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezados, Boa Noite!

Já tive que fazer um calculo para TMA, onde entrava HH:MM:SS, como não encontrei uma coisa simples na Internet, acabei criando o modelo abaixo (segue exemplo).

 

Select t1.diferenca,
Trunc(mod(t1.diferenca*24, 60)) || ':' || Trunc(mod(t1.diferenca*24*60, 60)) || ':' || Trunc(mod(t1.diferenca*24*60*60, 60)) Tempo
from
(select t0.data_final - t0.data_inicial diferenca
from
(select
to_date('21/11/2010 18:45:10','dd/mm/yyyy hh24:mi:ss') data_inicial,
to_date('22/11/2010 21:30:00','dd/mm/yyyy hh24:mi:ss') data_final
from dual) t0) t1

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.