SQL Server - restar dos fechas teniendo en cuenta que tienen entrada y salida

   
Vista:

restar dos fechas teniendo en cuenta que tienen entrada y salida

Publicado por ariel pacheco arparin82@hotmail.com (5 intervenciones) el 13/04/2015 16:54:10
Buenas 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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

restar dos fechas teniendo en cuenta que tienen entrada y salida

Publicado por Isaias (3186 intervenciones) el 13/04/2015 17:36:04
¿Llevas algún avance?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

restar dos fechas teniendo en cuenta que tienen entrada y salida

Publicado por ARIEL ARPARIN82@HOTMAIL.COM (5 intervenciones) el 13/04/2015 20:56:20
la verdad soy nuevo en ello y no se como hacer esto que me coloco hacer mi jefe.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

restar dos fechas teniendo en cuenta que tienen entrada y salida

Publicado por Isaias (3186 intervenciones) el 13/04/2015 23:46:04
Las HORAS TRANSCURRIDAS son tomando como INICIO y FIN, ¿solamente?

Esto, que si tomamos el ejemplo de los datos que nos pones, PEPITO tendría del 01/01/2015, de las 8:00 a las 13:50, ¿CINCO HORAS, CINCUENTA MINUTOS?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

restar dos fechas teniendo en cuenta que tienen entrada y salida

Publicado por ARIEL arparin82@hotmail.com (5 intervenciones) el 14/04/2015 05:21:42
buenas noches el problema no esta en restar dos horas el mismo día esto es fácil, la cuestión es que un usuario puede entrar hoy a las 6(dia 1) y salir al otro día a las 2am(dia 2) volver a entrar a las 8 am (dia2)y salir ese mismo día a las 4 pm (dia 2), otra cuestión es que un usuario marco dos veces salida y debe tomar la ultima salida teniendo en cuenta que después hay una entrada.

ayúdame con esto por favor te agradezco
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

restar dos fechas teniendo en cuenta que tienen entrada y salida

Publicado por Isaias (3186 intervenciones) el 14/04/2015 17:32:59
¿Cómo podría marcar DOS VECES una salida?, Ahí si me la pusiste difícil.

Otra duda, ¿Qué es el HUELLERO para ti?, recuerda que este es un foro internacional (Yo soy de México)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

restar dos fechas teniendo en cuenta que tienen entrada y salida

Publicado por Isaias (3186 intervenciones) el 14/04/2015 18:31:35
Mira, la lógica de un RELOJ CHECADOR, es que el primer registro, siempre es ENTRADA, el siguiente SALIDA, el siguiente ENTRADA, el siguiente SALIDA, por lo que veo imposible que el checador tome 2 registros, ya sea como ENTRADA o bien como SALIDA

A menos claro, que le des oportunidad al que se esta registrando de que indique que es ENTRADA o SALIDA

Imagínate un usuario jugando a registras PURAS SALIDAS, sin ninguna entrada, ¿me explico?

Te doy una "Luz"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
create table #RelojChecador (idusuario int, nombre varchar(50), fecha datetime, estado varchar(10), huellero int) 
 INSERT INTO #RelojChecador VALUES(1 ,'pepito','01/01/2015 08:00','inicio', 1)
 INSERT INTO #RelojChecador VALUES(1 ,'pepito','01/01/2015 10:00','fin', 1)
 INSERT INTO #RelojChecador VALUES(1 ,'pepito','01/01/2015 13:00','inicio', 1)
 INSERT INTO #RelojChecador VALUES(1 ,'pepito','01/01/2015 13:10','fin', 1)
 INSERT INTO #RelojChecador VALUES(1 ,'pepito','01/01/2015 13:50','fin', 1)
 INSERT INTO #RelojChecador VALUES(1 ,'pepito','02/01/2015 08:00','inicio', 1)
 INSERT INTO #RelojChecador VALUES(1 ,'pepito','02/01/2015 20:00','fin', 1)
 INSERT INTO #RelojChecador VALUES(1 ,'pepito','03/01/2015 13:00','inicio', 2)
 INSERT INTO #RelojChecador VALUES(1 ,'pepito','03/01/2015 13:50','fin', 2)
 INSERT INTO #RelojChecador VALUES(2 ,'maria','01/01/2015 08:00','inicio', 2)
 INSERT INTO #RelojChecador VALUES(2 ,'maria','01/01/2015 13:00','fin', 2)
 INSERT INTO #RelojChecador VALUES(2 ,'maria','01/01/2015 21:00','fin', 2)
 INSERT INTO #RelojChecador VALUES(2 ,'maria','02/01/2015 08:00','inicio', 2)
 
 select idusuario
 ,convert(char(8), fecha, 112) as fecha
 ,convert(char(5), min(fecha), 108) as Entrada
 ,convert(char(5), max(fecha), 108) as Salida
 ,datediff(hh, min(fecha), max(fecha)) as horas
 from #RelojChecador
 where idusuario = 1
 group by idusuario, convert(char(8), fecha, 112)

Resultado:

idusuario fecha Entrada Salida horas
1 20150101 08:00 13:50 5
1 20150201 08:00 20:00 12
1 20150301 13:00 13:50 0

Resuelve la parte donde no hay diferencia de HORAS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

restar dos fechas teniendo en cuenta que tienen entrada y salida

Publicado por ariel (5 intervenciones) el 15/04/2015 05:43:51
el huellero es un aparato donde el personal registra el ingreso y salida de la empresa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

restar dos fechas teniendo en cuenta que tienen entrada y salida

Publicado por ARIE (5 intervenciones) el 15/04/2015 05:42:31
teniendo el ejemplo que coloco las horas deberían decir asi

1 pepito 01/01/2015 08:00 inicio 1
1 pepito 01/01/2015 10:00 fin 1


aquí serian dos horas laboradas el dia 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

en este ejemplo como la persona timbro dos veces debería de restar es el ultimo fin es decir ahí serian 50 min, porque pasa esto porque una persona se equivoco, o porque no marco, o porque salio al otro dia, en fin son muchas variables es por ello que la resta debe comenzar donde encuentra un unicio con el fin que esta antes de otro inicio. se que se ve complicado pero esta es la realidad de lo que tocaria hacer en la consulta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

restar dos fechas teniendo en cuenta que tienen entrada y salida

Publicado por Isaias (3186 intervenciones) el 15/04/2015 21:11:10
Amig@

SQL (ANSI), no es inteligente....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

restar dos fechas teniendo en cuenta que tienen entrada y salida

Publicado por Hugo QN (18 intervenciones) el 22/04/2015 21:39:58
Hola, es imposible en que momento ingreso y salió, lo que debes tener es un corte de horario, podemos llamar dia lógico.

1. es decir poner un horario y dar un tiempo cuanto tiempo antes puede ingresar es decir si su horario empieza 8 am cuanto tiempo temprano puede entrar.

entonces tendria esto horario:
Hora Entrada: 8 am
Ref inicio: 1 pm
Ref. Fin: 2 pm
Hora salida: 6 pm
maximo temprano: 2 horas
minimo de tiempo entre 2 marcas: 5 minutos

2. con esto tendríamos nuestro hora inicio de dia logico seria 6 am del dia 1 (+ 24 horas) hasta 5:59 am del dia 2.
y buscar las marcas entra esta horas.

que pasaria si entrada marca 8am del dia 1 y salida 7:55 am del dia 2 luego entrada 8am del mismo dia 2?
el sistema enloquese y no sabe cual es cual, aqui es donde interviene el tiempo entre 2 marcas que debe pasar para considerar que es una nueva marca.

es decir 5 minutos, si marco 8:00 luego 8:02 y 8:04 entonces no debes tomar las primera 2 marcas.
¿y si en dia lógico se entonctró 3 marcas que pasa o 1 marca (8:00am dia 1, 1:00pm dia 1 y 7:55am dia 2)?
seria un mensage? (marca impar o falta marcas o entrada sin salida, etc).

asi debes jugar con los tiempos.

espero te ayude y aclare tu idea.

saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar