Calcular horas no banco de dados
Qual é a melhor forma de fazer o calculo de horas no banco de dados?
Ex.
Tenho 10 Funcionários que trabalham 6:12 diárias cada.
Em um dia dá 62:00 se eu ir somando de um a um "6:12+6:12+6:12...." (NÃO GOSTARIA DE FAZER ASSIM - pq acho que vai demorar demais, visto que tenho que fazer isto para 7 dias da semana)
Se eu fizer um "Select Sum(Horas)" vai dar 6120 (Gostaria de fazer assim, que acho que vai ficar mais rápido - fazendo assim, como eu faço para converter para horas?)
Existe uma forma melhor de fazer isto?
Hoje meu banco de dados tem cerca de 1200 funcionários.
Desde já agradeço
Ex.
Tenho 10 Funcionários que trabalham 6:12 diárias cada.
Em um dia dá 62:00 se eu ir somando de um a um "6:12+6:12+6:12...." (NÃO GOSTARIA DE FAZER ASSIM - pq acho que vai demorar demais, visto que tenho que fazer isto para 7 dias da semana)
Se eu fizer um "Select Sum(Horas)" vai dar 6120 (Gostaria de fazer assim, que acho que vai ficar mais rápido - fazendo assim, como eu faço para converter para horas?)
Existe uma forma melhor de fazer isto?
Hoje meu banco de dados tem cerca de 1200 funcionários.
Desde já agradeço
Dirceu Morais
Curtidas 0
Respostas
Diego Alef
18/09/2017
Isso depende da estrutura da sua tabela, existe variáveis especificas para este tipo de inserção no banco de dados.
GOSTEI 0
Dirceu Morais
18/09/2017
Tenho uma tabela de Colaborador (ID_Carga_Horaria) e tabela Carga_horaria (id_carga_horaria).
Na tabela de carga horaria, tenho o total de horas a ser trabalhada no dia.
Ex.
id/Seg/Ter/Qua/Qui/sex/sab/dom
1/6:00/6:00/6:00/6:00/6:00/6:00
2/6:00/6:00/6:00/6:00/0:00//0:00
3/8:00/8:00/8:00/8:00/8:00/4:00/0:00
é isso que tenho
Na tabela de carga horaria, tenho o total de horas a ser trabalhada no dia.
Ex.
id/Seg/Ter/Qua/Qui/sex/sab/dom
1/6:00/6:00/6:00/6:00/6:00/6:00
2/6:00/6:00/6:00/6:00/0:00//0:00
3/8:00/8:00/8:00/8:00/8:00/4:00/0:00
é isso que tenho
GOSTEI 0
Luiz Santos
18/09/2017
Dirceu.
Faltou dizer qual o banco você está usando.
Grande abraço
Faltou dizer qual o banco você está usando.
Grande abraço
GOSTEI 0
Diego Alef
18/09/2017
Se sua intenção é fazer um sistema na qual tenha um controle de ponto, seria melhor utilizar da seguinte forma
exemplo
Entrada / ALMOÇO-SAIDA / ALMOÇO-VOLTA / SAÍDA
08:00 / 12:00 / 13:00 / 18:00 = 9 HORAS
COMO AI SÃO 6HRS NÃO TEM HORÁRIO DE ALMOÇO
ENTRADA / SAÍDA
08:00 / 14:00 = 6 HORAS
O FUNCIONÁRIO BATE O PONTO NO HORÁRIOS E O SISTEMA REALIZA UMA SOMA E POSTERIORMENTE CASO QUEIRA UM RELATÓRIO, SUPER FACINHO.
AQUI NA DEVMEDIA EXISTE UM CURSO NA QUAL ENSINA MAIS OU MENOS TODOS ESSES PROCEDIMENTOS, SÓ PESQUISAR.
BOA SORTE.
exemplo
Entrada / ALMOÇO-SAIDA / ALMOÇO-VOLTA / SAÍDA
08:00 / 12:00 / 13:00 / 18:00 = 9 HORAS
COMO AI SÃO 6HRS NÃO TEM HORÁRIO DE ALMOÇO
ENTRADA / SAÍDA
08:00 / 14:00 = 6 HORAS
O FUNCIONÁRIO BATE O PONTO NO HORÁRIOS E O SISTEMA REALIZA UMA SOMA E POSTERIORMENTE CASO QUEIRA UM RELATÓRIO, SUPER FACINHO.
AQUI NA DEVMEDIA EXISTE UM CURSO NA QUAL ENSINA MAIS OU MENOS TODOS ESSES PROCEDIMENTOS, SÓ PESQUISAR.
BOA SORTE.
GOSTEI 0
Dirceu Morais
18/09/2017
Estou usando Firebird 2.5.
Não tenho intenção de fazer controle de ponto. Só preciso saber quantas horas ele trabalhou no dia.
A minha intenção e montar um relatório de absenteismo, ou seja, verificar quantas horas mensais teriam que trabalhar e quantas realmente foram trabalhadas.
Não tenho intenção de fazer controle de ponto. Só preciso saber quantas horas ele trabalhou no dia.
A minha intenção e montar um relatório de absenteismo, ou seja, verificar quantas horas mensais teriam que trabalhar e quantas realmente foram trabalhadas.
GOSTEI 0
Everton Santos
18/09/2017
bom dia em delphi vc tem funções que calculam diferença de horas retornando horas, minutos,segundos
veja a unit DATEUTIL
VC INFORMA HORA_FIM, HORA_INICIO OU AI VE FAZ COMO EU QDO GRAVAR O REGISTRO DO TRABALHO EU CALCULO
E GRAVO 1,5 HORAS 10,35 HORAS E ASSIM POR DIANTE
veja a unit DATEUTIL
VC INFORMA HORA_FIM, HORA_INICIO OU AI VE FAZ COMO EU QDO GRAVAR O REGISTRO DO TRABALHO EU CALCULO
E GRAVO 1,5 HORAS 10,35 HORAS E ASSIM POR DIANTE
GOSTEI 0