Ir para conteúdo
Fórum Script Brasil
  • 0

Banco de horas MYSQL


Netsoft

Pergunta

Em uma consulta retorna uma hora com o seguinte contexto:

Cast(Sec_To_Time(Time_To_Sec(e.qh_saida - e.qh_fiminterv + e.qh_iniciointerv - e.qh_entrada) - Time_To_Sec(if(b.pd_saida is null,0,b.pd_saida) - if(b.pd_intervalo_fim is null,0,b.pd_intervalo_fim) + if(b.pd_intervalo_inicio is null,0,b.pd_intervalo_inicio) - if(b.pd_entrada is null,0,b.pd_entrada))) As time) As diferenca

Exemplos:

qh_saida = 08:00

qh_fiminterv = 12:00

qh_iniciointerv = 13:00

e.qh_entrada = 18:00

pd_saida pd_intervalo_fim pd_intervalo_inicio pd_entrada diferenca

18:30:00 12:00:00 11:00:00 07:30:00 -02:00:00

17:30:00 13:00:00 12:00:00 08:30:00 00:00:00

18:00:00 14:00:00 13:00:00 08:10:00 NULL

20:35:00 20:35:00 20:33:00 20:23:00 07:50:00

21:25:00 0 0 08:49:00 NULL

0 0 0 19:11:00 26:51:00

O que pode esta errado ?

Guilherme

Editado por Netsoft
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

O sql é este

Select

b.pd_id,

a.fu_funcionario,

c.pd_ponto_dado,

c.pt_abonar,

a.po_mes,

a.po_ano,

Cast(Sec_To_Time(Time_To_Sec(e.qh_saida - e.qh_fiminterv + e.qh_iniciointerv - e.qh_entrada)) As time) As horasTinhTrabalhar,

Cast(if(Sec_To_Time(Time_To_Sec(b.pd_saida - b.pd_intervalo_fim + b.pd_intervalo_inicio - b.pd_entrada)) is null, 0 , Sec_To_Time(Time_To_Sec(b.pd_saida - b.pd_intervalo_fim + b.pd_intervalo_inicio - b.pd_entrada))) As time) As totalHoraTrabalhou,

Cast(if(Cast(Sec_To_Time(Time_To_Sec(e.qh_saida - e.qh_fiminterv + e.qh_iniciointerv - e.qh_entrada) - Time_To_Sec(if(b.pd_saida is null,0,b.pd_saida) - if(b.pd_intervalo_fim is null,0,b.pd_intervalo_fim) + if(b.pd_intervalo_inicio is null,0,b.pd_intervalo_inicio) - if(b.pd_entrada is null,0,b.pd_entrada))) As time) > Cast(Sec_To_Time(Time_To_Sec(e.qh_saida - e.qh_fiminterv + e.qh_iniciointerv - e.qh_entrada)) As time) || Cast(Sec_To_Time(Time_To_Sec(e.qh_saida - e.qh_fiminterv + e.qh_iniciointerv - e.qh_entrada) - Time_To_Sec(if(b.pd_saida is null,0,b.pd_saida) - if(b.pd_intervalo_fim is null,0,b.pd_intervalo_fim) + if(b.pd_intervalo_inicio is null,0,b.pd_intervalo_inicio) - if(b.pd_entrada is null,0,b.pd_entrada))) As time) is null,Cast(Sec_To_Time(Time_To_Sec(e.qh_saida - e.qh_fiminterv + e.qh_iniciointerv - e.qh_entrada)) As time),Cast(Sec_To_Time(Time_To_Sec(e.qh_saida - e.qh_fiminterv + e.qh_iniciointerv - e.qh_entrada) - Time_To_Sec(if(b.pd_saida is null,0,b.pd_saida) - if(b.pd_intervalo_fim is null,0,b.pd_intervalo_fim) + if(b.pd_intervalo_inicio is null,0,b.pd_intervalo_inicio) - if(b.pd_entrada is null,0,b.pd_entrada))) As time)) As time) As diferenca,

b.pd_dia,

Day(b.pd_dia) As dia,

if(b.pd_saida is null,0,b.pd_saida),

if(b.pd_intervalo_fim is null,0,b.pd_intervalo_fim),

if(b.pd_intervalo_inicio is null,0,b.pd_intervalo_inicio),

if(b.pd_entrada is null,0,b.pd_entrada)

From

rch_net_ponto a Inner Join

rch_net_ponto_dados b On b.po_ponto = a.po_id Left Join

rch_net_ponto_ponto_dados c On (c.pd_ponto_dado = b.pd_id) And (c.po_ponto = b.po_ponto) Inner Join

rch_net_funcionarios d On d.fu_id = a.fu_funcionario Inner Join

rch_net_quadro_horario e On e.hr_horario = d.hr_horario

GROUP By b.pd_dia

Editado por Netsoft
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...