Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

ayuda con un query...

Estas en el tema de ayuda con un query... en el foro de Bases de Datos General en Foros del Web. Saludos espero alguien me pueda orientar tengo un problema en una tabla ten N registros entre ellos estan fecha(datetime) hora_inicio(datetime) y hora_final(datetime).... con esos datos ...
  #1 (permalink)  
Antiguo 20/07/2005, 13:50
 
Fecha de Ingreso: diciembre-2003
Mensajes: 595
Antigüedad: 20 años, 11 meses
Puntos: 1
ayuda con un query...

Saludos espero alguien me pueda orientar tengo un problema en una tabla ten N registros entre ellos estan fecha(datetime) hora_inicio(datetime) y hora_final(datetime).... con esos datos mi consulta es la siguiente aqui empieza el dia o el corte de cajas es de 18:01 y termina hasta las 18:00 del dia siguiente como puedo consultar digamos que registros entraron el dia tal al tal de las 18:01 queempieza el dia ha las 18:00 del dia siguiente si alguein sabe algo les estare agradecido
  #2 (permalink)  
Antiguo 20/07/2005, 15:25
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 24 años, 1 mes
Puntos: 3
Prueba con algo así:
Código PHP:
SELECT OPERADORd.DescripcionDIA=DATEPART(DAYsysfechaDigitacion), MES=DATEPART(MONTHsysfechaDigitacion), ANO=DATEPART(YEARsysfechaDigitacion),
'1'=SUM(CASE WHEN DATEPART(HOURsysfechaDigitacion)=1 THEN 1 ELSE 0 END), 
'2'=SUM(CASE WHEN DATEPART(HOURsysfechaDigitacion)=2 THEN 1 ELSE 0 END),
'3'=SUM(CASE WHEN DATEPART(HOURsysfechaDigitacion)=3 THEN 1 ELSE 0 END),
'4'=SUM(CASE WHEN DATEPART(HOURsysfechaDigitacion)=4 THEN 1 ELSE 0 END), 
'5'=SUM(CASE WHEN DATEPART(HOURsysfechaDigitacion)=5 THEN 1 ELSE 0 END),
'6'=SUM(CASE WHEN DATEPART(HOURsysfechaDigitacion)=6 THEN 1 ELSE 0 END),
'7'=SUM(CASE WHEN DATEPART(HOURsysfechaDigitacion)=7 THEN 1 ELSE 0 END), 
'8'=SUM(CASE WHEN DATEPART(HOURsysfechaDigitacion)=8 THEN 1 ELSE 0 END),
'9'=SUM(CASE WHEN DATEPART(HOURsysfechaDigitacion)=9 THEN 1 ELSE 0 END),
'10'=SUM(CASE WHEN DATEPART(HOURsysfechaDigitacion)=10 THEN 1 ELSE 0 END), 
'11'=SUM(CASE WHEN DATEPART(HOURsysfechaDigitacion)=11 THEN 1 ELSE 0 END),
'12'=SUM(CASE WHEN DATEPART(HOURsysfechaDigitacion)=12 THEN 1 ELSE 0 END),
'13'=SUM(CASE WHEN DATEPART(HOURsysfechaDigitacion)=13 THEN 1 ELSE 0 END), 
'14'=SUM(CASE WHEN DATEPART(HOURsysfechaDigitacion)=14 THEN 1 ELSE 0 END),
'15'=SUM(CASE WHEN DATEPART(HOURsysfechaDigitacion)=15 THEN 1 ELSE 0 END),
'16'=SUM(CASE WHEN DATEPART(HOURsysfechaDigitacion)=16 THEN 1 ELSE 0 END), 
'17'=SUM(CASE WHEN DATEPART(HOURsysfechaDigitacion)=17 THEN 1 ELSE 0 END),
'18'=SUM(CASE WHEN DATEPART(HOURsysfechaDigitacion)=18 THEN 1 ELSE 0 END),
'19'=SUM(CASE WHEN DATEPART(HOURsysfechaDigitacion)=19 THEN 1 ELSE 0 END),
'20'=SUM(CASE WHEN DATEPART(HOURsysfechaDigitacion)=20 THEN 1 ELSE 0 END),
'21'=SUM(CASE WHEN DATEPART(HOURsysfechaDigitacion)=21 THEN 1 ELSE 0 END),
'22'=SUM(CASE WHEN DATEPART(HOURsysfechaDigitacion)=22 THEN 1 ELSE 0 END),
'23'=SUM(CASE WHEN DATEPART(HOURsysfechaDigitacion)=23 THEN 1 ELSE 0 END),
'24'=SUM(CASE WHEN DATEPART(HOURsysfechaDigitacion)=24 THEN 1 ELSE 0 END),
FECHACAST(DATEPART(MONTHsysfechaDigitacion) AS VARCHAR(4))+'-'+CAST(DATEPART(DAYsysfechaDigitacion) AS VARCHAR(4))+'-'+CAST(DATEPART(YEARsysfechaDigitacion) AS VARCHAR(4))
  
FROM vw_Auditoria a inner join tb_digitadoras d on a.operador=d.codDigitadora  
where sysfechadigitacion between 
'06-20-2005 00:00.000' and '07-25-2005 23:59.000'
GROUP BY OPERADORd.DescripcionDATEPART(DAYsysfechaDigitacion), DATEPART(MONTHsysfechaDigitacion), DATEPART(YEARsysfechaDigitacion), 
CAST(DATEPART(MONTHsysfechaDigitacion) AS VARCHAR(4))+'-'+CAST(DATEPART(DAYsysfechaDigitacion) AS VARCHAR(4))+'-'+CAST(DATEPART(YEARsysfechaDigitacion) AS VARCHAR(4)) 
CAda número en los "case" corresponde a una HORA (de 1:00 a 24:00), y vas contando la cantidada de registros que hayan sido igresados en esa hora...

Bueno, espero te sirva
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
  #3 (permalink)  
Antiguo 20/07/2005, 18:35
 
Fecha de Ingreso: diciembre-2003
Mensajes: 595
Antigüedad: 20 años, 11 meses
Puntos: 1
ok gracias

Gracias intentare con la estructura que me proporcionaste y te comento que paso de ante mano te agradesco la molestia que te tomaste en contestarme
  #4 (permalink)  
Antiguo 21/07/2005, 03:47
Avatar de Vice  
Fecha de Ingreso: agosto-2003
Mensajes: 613
Antigüedad: 21 años, 3 meses
Puntos: 2
¿Y no es más fácil restar 18 horas y un minuto a la fecha+hora que tu tienes y juntar por ahí el día?.
Al fin y al cabo esto es lo que quieres: desplazar 18 horas lo que sería tu día.
Por ejemplo: (hoy, 18:01) - (18:01)=(hoy, 00:00)
(mañana, 18:00) - (18:01)=(hoy, 23:59)
sólo tienes que agrupar para contar cada cosa. ¿Como hacerlo?, pues aquí tienes un ejemplo:
Código:
SELECT left ( date_sub(fecha, interval 1081 minute),  10 ), count(*)
FROM tabla WHERE condiciones
group by 1
Esto te contará cuantas filas hay en cada día según la regla de empezar el día a las 18:01.
Un saludo.
__________________
Estoy contagiado de Generación-I
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:17.