Debes darnos más datos, como pide el amigo huesos52, pero si has guardado fecha-hora de entrada y fecha-hora de salida en un mismo campo y marcado con otro campo o no (tal vez no sería necesario) la salida, te bastaría con agrupar por DATE_FORMAT(). Una consulta así te mostraría la hora de entrada y salida si sólo hay una el mismo día y las dos ocurren en el mismo día:
SELECT campotrabajador, DATE_FORMAT(campofecha,'%Y-%m-%d')dia, MIN(campofecha) entrada, MAX(campofecha)salida FROM nombretabla GROUP BY DATE_FORMAT(campofecha,'%Y-%m-%d'), campotrabajador
Luego veremos qué usar para mostrar sólo la hora en tu versión. Creo que la función de cadena substring -8 podría servir en tu versión
Código sql:
Ver originalcampotrabajador, SELECT DATE_FORMAT(campofecha,'%Y-%m-%d')dia, SUBSTRING(MIN(campofecha),-8) entrada, SUBSTRING(MAX(campofecha),-8)salida
FROM palabras GROUP BY DATE_FORMAT(campofecha,'%Y-%m-%d'), campotrabajador
No obstante, te diré que esto puede llevarte a error, pues no nos dices cómo marcas las entradas y salidas, si con E/S o simplemente piensas que te bastará con la diferencia horaria. Por otra parte, tampoco dices si en el mismo día podría haber varias entradas y salidas, lo que impediría usar esta consulta con garantía, igual que si entras un día y sales el siguiente.
Respecto a las diferencias, con una versión tan antigua tendrás que recurrir a UNIX_TIME
con algo así conseguirás los segundos:
SELECT campotrabajador, DATE_FORMAT(campofecha,'%Y-%m-%d')dia, SUBSTRING(MIN(campofecha),-8) entrada, substring(MAX(campofecha),-8)salida, (unix_timestamp(max(campofecha))- unix_timestamp(min(campofecha)))diferencia FROM palabras GROUP BY DATE_FORMAT(campofecha,'%Y-%m-%d'), campotrabajador
campotrabajador es el campo que te sirve para indicar el trabajador
Luego con FLOOR y MOD sacaremos la diferencia en un formato time.
Ah, y el mejor consejo de todos; si la versión de MySQL depende de ti, y no sólo del servidor, actualiza a una versión posterior a 4.1. Comprueba que versión usa tu servidor, porque lo mismo es más reciente y tú puedes actualizar la tuya y usar funciones como timediff, la recomendada por huesos52. Bastará con ella y te evitarás unix_timestamp, floor, mod, etc. (la diferencia no es poca, ¿verdad?)