Cómo restar dos fechas que contengan un parámetro de inicio y fin
Cómo restar dos fechas que contengan un parámetro de inicio y fin ariel 13 Abril, 2015 - 17:11Buenas tardes tengo una consulta a ver quien me la puede ayudar a resolver, tengo un tabla que tienen los siguientes datos:
id usuario nombre usuario feha y hora estado huellero 1 pepito 01/01/2015 08:00 inicio 1 1 pepito 01/01/2015 10:00 fin 1 1 pepito 01/01/2015 13:00 inicio 1 1 pepito 01/01/2015 13:10 fin 1 1 pepito 01/01/2015 13:50 fin 1 1 pepito 02/01/2015 08:00 inicio 1 1 pepito 02/01/2015 20:00 fin 1 1 pepito 03/01/2015 13:00 inicio 2 1 pepito 03/01/2015 13:50 fin 2 2 maria 01/01/2015 08:00 inicio 2 2 maria 01/01/2015 13:00 fin 2 2 maria 01/01/2015 21:00 fin 2 2 maria 02/01/2015 08:00 inicio 2
La idea es que la consulta me diga las horas transcurridas una persona teniendo en cuenta que el fin es cuando encuentre el siguiente inicio y que hay tener en cuenta que pueden ser de diferentes huelleros. Les agradezco me colaboren con esto que lo estoy necesitando urgente. gracias
Hola Me faltaria aclarar qué
Subido por Anonimo (no verificado) el 14 Abril, 2015 - 09:42
buenas noches si señor es un
Subido por ariel el 15 Abril, 2015 - 05:58
Entonces, asumiendo que de
Subido por Carlos el 17 Abril, 2015 - 13:26
En respuesta a buenas noches si señor es un por ariel
Entonces, asumiendo que de cada día lo que te interesa es el primer fichaje de inicio y el último fichaje de fin, podrías solventar el problema de los registros de más modificando la consulta anterior por algo así:
select a.id, a.usuario, a.dia datediff(h,a.fecha,b.fecha) [Diferencia en horas] from (select id, usuario, estado, year(fecha)*10000+month(fecha)*100+day(fecha) dia, min(fecha) from tabla_fichajes where estado='inicio'group by id, usuario, estado, year(fecha)*10000+month(fecha)*100+day(fecha) ) tabla a
join (select id, usuario, estado, year(fecha)*10000+month(fecha)*100+day(fecha) dia, max(fecha)
from tabla_fichajes
where estado='fin'
group by id, usuario, estado, year(fecha)*10000+month(fecha)*100+day(fecha)) tabla b on a.idusuario=b.idusuario and a.dia=b.dia
Con esto, si no me equivoco, te quedarías en las tablas a y b con sólo el primer y el último fichaje diario de cada usuario, independientemente del huellero que utilicen, ¿es más o menos lo que buscabas?