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
- 1331 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
-
- 690412
- 1
- Jul 5, 2015
Sin Respuesta
-
- 117
- 0
- Oct 18
-
- 181
- 0
- Jul 9
-
- 577
- 1
- Mar 19
-
- 455
- 2
- Feb 26
-
- 5020
- 0
- Nov 7, 2023
-
- 490
- 0
- Sep 19, 2023
-
- 489
- 0
- Ago 21, 2023
-
- 648
- 0
- May 14, 2023
- ver todas
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
alyvrs preguntó Oct 19
Ayuda , necesito mostrar datos creados solo por el…ManHol preguntó Jul 9
pasar un archivo de excel a csv en pythonArtEze respondió Abr 24
Alguien sabe, no me ignorenArtEze seleccionó una respuesta Abr 24
Bajar extensión de Chrome sin actualizar el navega…ArtEze respondió Abr 24
Bajar extensión de Chrome sin actualizar el navega…ArtEze preguntó Abr 24
Bajar extensión de Chrome sin actualizar el navega…ArtEze respondió Abr 24
No me deja instalar OracleArtEze respondió Abr 24
Formulario que guarde los datos de un jsonArtEze comentó Abr 24
Script /boot/ scrapingSantiago2610 comentó Mar 23
Acualizar ChoiceField en django
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
- 227320 Puntos
- Peter
- 150480 Puntos
- white
- 75880 Puntos
- carlossevi
- 63580 Puntos
- magarzon
- 30650 Puntos
- pregunton
- 20400 Puntos