Buen dia a todos; en este momento me surgio la duda estoy realizando una aplicacion web utilizando JSP y servlets usando mvc, en el manejo de la administracion de horas de un empleado, registre la horas de entradas y horas de salidas, en mi base de datos en mysql tengo la tabla se llama registro y tiene los datos id_registro de tipo int auto incrementable,fecha_registro de tipo date,hora_entrada de tipo time ,hora_salida de tipo time,total_horas_retardo de tipo time; en mi clase modeloregistrar_empleado.java tengo declaradas mis variables como tipo String hora_entrada,String hora_salida, pero al momento de realizar la condicion si (hora_entrada > 9:00:00) si cumple esto que solo sume los minutos y se vayan alamacenando en el campo de mi tabla total_horas, la pregunta es ¿Seria correcto convertir mis variables string a tipo time?, o alguna sugerencia que me puedan comentar; si alguien ha manejado la comparacion de horas y sumar los minutos????
entre Desarrolladores
Recibe ayuda de expertos
Registrate y pregunta
Es gratis y fácil
Recibe respuestas
Respuestas, votos y comentarios
Vota y selecciona respuestas
Recibe puntos, vota y da la solución
Pregunta
¿Que tipo de dato en mysql puedo utilizar para manejar horas en el formato (HH:mm:ss)?
- preguntó
- Web
- 1034 Vistas
- 2 Respuestas
- solucionada
2 Respuestas
Hola Cristi_C,
con la tabla que describís, estás violando las reglas de Normalización de almacenamiento de base de datos... y además compplicándote la vida.
La tabla correcta para este escenario es:
Tabla: Registro
----------------------
id_registro (int, unsigned, auto_incremental, primary key)
id_empleado (del mismo tipo que el ID de la tabla de empleados)
entrada (datetime)
salida (datetime)
Con esto, respetás la 1ra Forma Normal, que dice que cada dato debe estar en un campo. En tu aproximación, tenías un dato (el horario de entrada es la fecha y la hora, no solo la hora) en dos campos, lo mismo el de salida, y tenés una repetición al guardar el tiempo de trabajo, ya que ese dato es un cálculo sobre dos datos existentes.
Luego, para saber las horas trabajadas, solo tenés que hacer una query sobre la tabla y no almacenarla en otro lugar...
A partir de ahí, si trabajás todas las fechas en formato fecha de Java (no como string) podés hacer los cálculos que quieras y formateando la salida, mostrarla como te haga falta.
Saludos cordiales!
Por favor, accede o regístrate para añadir un comentario.
Creo que ésto debería funcionar. Primero convertimos las horas a milisegundos para poder compararlas y finalmente a la diferencia de dichas horas (si es que la fecha de entrada de la persona es mayor a la oficial) que están también en milisegundos las convertimos a minutos y los retornamos.
import java.util.concurrent.TimeUnit.*;
/**
*
@return [int] Si el retorno es igual a 0, no hay minutos extras
*
*/
public int getLateMinutes(Date entryTime)
{
int minutes = 0;
Date officialEntryTime = new SimpleDateFormatter("H:mm").format("9:00");
if(entryTime.getTime() > officialEntryTime.getTime())
{
// getTime() convierte la hora a milisegundos
difference = entryTime.getTime() - officialEntryTime.getTime();
// como la diferencia está en milisegundos, lo convertimos a minutos
minutes = TimeUnit.MILLISECONDS.toMinutes(difference);
}
return minutes;
}
Por favor, accede o regístrate para añadir un comentario.
Por favor, accede o regístrate para responder a esta pregunta.
En el blog
-
- 97389
- 1
- Jul 5, 2015
Preguntas sin respuesta
-
- 21
- 0
- hace 1 día
-
- 19
- 0
- hace 3 días
-
- 34
- -1
- May 21
-
- 49
- 0
- May 18
-
- 65
- 1
- May 9
-
- 30
- 0
- May 4
-
- 51
- 1
- Abr 29
-
- 52
- 0
- Mar 23
- ver todas las preguntas
Preguntas relacionadas
- Convertir tipo de dato long a tipo Date en formato ("HH:mm:ss")
- ¿Como puede hacer que guarde todo tipo de simbolos en mi app web (java y mysql)?
- Uso de SimpleDateFormat("dd-MM-yyyy") en el momento de insertar el dato fecha en la tabla de mysql
- ¿Como guardar una imagen en java web?
- Restricción de símbolos y números
Actividad Reciente
rach preguntó hace 1 día
contar dias intermedios en consulta sqlhecates preguntó hace 3 días
Añadir páginas en blanco en un iReports - Jasper S…yoelrodguez comentó hace 4 días
Problema al realizar el insert de múltiples regist…Leonardo-Tadei comentó hace 5 días
Modal en php y javascriptLeonardo-Tadei comentó hace 6 días
llenado de tablas con get or createLeonardo-Tadei respondió hace 6 días
como hacer que mi javaScript funcione con todos lo…Leonardo-Tadei respondió hace 6 días
Migrar base de datos MongoDB a MySQLLeonardo-Tadei respondió hace 6 días
como puedo leer un arreglo en php que guarde con l…Leonardo-Tadei respondió hace 6 días
Integrar bootsrap en CAKEPHP 4.xLeonardo-Tadei comentó hace 6 días
Problema al realizar el insert de múltiples regist…
Ultimas Preguntas
Preguntas relacionadas
- Convertir tipo de dato long a tipo Date en formato ("HH:mm:ss")
- ¿Como puede hacer que guarde todo tipo de simbolos en mi app web (java y mysql)?
- Uso de SimpleDateFormat("dd-MM-yyyy") en el momento de insertar el dato fecha en la tabla de mysql
- ¿Como guardar una imagen en java web?
- Restricción de símbolos y números
Usuarios Top
- Leonardo-Tadei
- 227240 Puntos
- Peter
- 150210 Puntos
- white
- 75860 Puntos
- carlossevi
- 63580 Puntos
- magarzon
- 30650 Puntos
- pregunton
- 20400 Puntos