Hola necesito que alguien me oriente, ¿Como puedo comparar desde Java, el registro de entrada con el registro del horario de entrada asi como el registro y horario de comienzo de comida obtenidas desde base de datos en mysql , O tendria que comparar el registro de entrada con la hora actual utilizando NOW(), en mysql ?????
;puesto que el empleado registra su entrada y registra su salida 4 veces al dia seria un total de 8 entradas y salidas.
tengo estas 2 tablas:
DROP TABLE IF EXIST HORARIOS;
CREATE TABLE HORARIOS(
ID_HORARIO INT(11) AUTO_INCREMENT NOT NULL,
NOMBRE_HORARIO VARCHAR(45),
HORARIO_ENTRADA TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
HORARIO_COMIENZO_COMIDA TIMESTAMP DEFAULT NOW(),
HORARIO_TERMINO_COMIDA TIMESTAMP DEFAULT LOCALTIME(),
HORARIO_SALIDA TIMESTAMP DEFAULT LOCALTIMESTAMP(),
PRIMARY KEY(ID_HORARIO)
);
DROP TABLE IF EXIST ASISTENCIA;
CREATE TABLE ASISTENCIA(
ID_ASISTENCIA INT(11) AUTO_INCREMENT NOT NULL,
ID_EMPLEADO INT(11) NOT NULL,
HORA_ENTRADA DEFAULT CURRENT_TIMESTAMP,
HORA_COMIENZO_COMIDA TIMESTAMP DEFAULT NOW(),
HORA_TERMINO_COMIDA TIMESTAMP DEFAULT LOCALTIME(),
HORA_SALIDA DEFAULT LOCALTIMESTAMP(),
PRIMARY KEY(ID_ASISTENCIA)
);
en la clase que tengo es lo siguiente
public List<modeloAsistencia>consultarxdiferenciaminutos(int id_empleado_aux ) throws ParseException {
//Creo un objeto SimpleDateFormat
SimpleDateFormat fecha_formato = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");
PreparedStatement psmt = null;
ResultSet tabla = null;
List<modeloAsistencia> list = new ArrayList<modeloAsistencia>();
String consultar = "SELECT A.ID_ASISTENCIA,E.APELLIDO_PATERNO,E.APELLIDO_MATERNO,E.NOMBRE,TIME_FORMAT(A.HORA_ENTRADA,'%H:%i %s'),TIME_FORMAT(A.HORA_SALIDA,'%H:%i:%s'), ";
try {
//creo los objetos de tipo date
Date fecha_hora_entrada_aux =" ";
Date fecha_horario_entrada_aux = " ";
// duda de como obtengo los valores desde la base de datos creo que no esta tomando ningun valor
fecha_horario_entrada_aux = fecha_formato.parse(horario_entrada);
fecha_hora_entrada_aux = fecha_formato.parse(hora_entrada);
fecha_horario_comienzo_comida_aux = fecha_formato.parse(horario_comienzo_comida);
fecha_hora_comienzo_comida_aux = fecha_formato.parse(hora_comienzo_comida);
//para hacer la comparacion de la hora de registro de entrada 08:10:00 con el horario de entrada de 08:00:00 y registro de comienzo de comida 14:10:00 compararlo con horario de comienzo de la comida 14:00:00 compararlo con en java o tendria que hacerlo en mysql que es mas factible ????
if( fecha_hora_entrada_aux.after(fecha_horario_entrada_aux) && fecha_hora_comienzo_comida_aux .after(fecha_horario_comienzo_comida_aux ) ){
consultar +=" SEC_TO_TIME((TIME_TO_SEC(TIMEDIFF(HORA_ENTRADA,******************)))) DIFERENCIA_MINUTOS ";
Tengo la consulta que me hace la diferencia de minutos entre del registro de entrada
SELECT ID_EMPLEADO,
SEC_TO_TIME((TIME_TO_SEC(TIMEDIFF(HORA_ENTRADA,******************)))) DIFERENCIA_MINUTOS
FROM ASISTENCIA;
En la consulta que deje ***********, tendira que colocar el horario de entrada, o la hora actual colocando NOW() ????
}
catch(Exception e){
System.out.println( e);
}
if (id_empleado_aux != 0 ){
consultar +="FROM ASISTENCIA A,EMPLEADO E WHERE AND E.ID_EMPLEADO= ?; ";
}
try {
Context ctx = new InitialContext();
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/empleados_asistencias");
Connection con = ds.getConnection();
psmt = con.prepareStatement(consultar);
if (id_empleado_aux != 0 ){
psmt.setInt(1, id_empleado_aux);
}
tabla = psmt.executeQuery();
while (tabla.next()) {
modeloAsistencia modeloAsistencia = new modeloAsistencia();
modeloAsistencia.setId_asistencia(tabla.getInt(1));
//
list.add(modeloAsistencia);
}
psmt.close();;
tabla.close();
con.close();
} catch (Exception e) {
System.out.println( e);
}
return list;
}
}