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

filtrar dias por hora inicio 6am hora fin 5:59am siguiente dia

Estas en el tema de filtrar dias por hora inicio 6am hora fin 5:59am siguiente dia en el foro de SQL Server en Foros del Web. Hola buena tarde, Solo para preguntar como filtrar un dia que inicie el dia de ayer a las 6am y termine el dia de hoy ...
  #1 (permalink)  
Antiguo 23/10/2013, 11:54
 
Fecha de Ingreso: febrero-2009
Mensajes: 10
Antigüedad: 15 años, 2 meses
Puntos: 0
filtrar dias por hora inicio 6am hora fin 5:59am siguiente dia

Hola buena tarde,
Solo para preguntar como filtrar un dia que inicie el dia de ayer a las 6am y termine el dia de hoy a las 5:59am, si hago una consulta para un solo dia si me sale correctamente
(diaanterior = '2013-10-01' AND hora>= 600) OR (diasiguiente = '2013-10-02' AND hora < 600)

Pero para filtrar automaticamente por 5 dias para atras y agruparlos por mis dias laborales que empiezan a las 6am y terminan a las 5:59 del otro dia, como se le hara, les comento por un dia si tengo la condicion, pero para varios dias no tengo idea, se me ocurre algo como en el select un ROW_NUMBER() OVER(PARTITION BY DIAS ORDER BY HORAS asc), pero ahi no me toma la condición que mis dias comienzen a las 6am.

Por si alguien sabe como se los agradeceré.
Saludos.
  #2 (permalink)  
Antiguo 23/10/2013, 12:15
Avatar de Inicia  
Fecha de Ingreso: octubre-2010
Ubicación: Actualmente en GDL
Mensajes: 135
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: filtrar dias por hora inicio 6am hora fin 5:59am siguiente dia

between dia '2013-10-01 00:00:00.000 ' and '2013-10-06 00:00:00.000 '
  #3 (permalink)  
Antiguo 23/10/2013, 12:35
 
Fecha de Ingreso: febrero-2009
Mensajes: 10
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: filtrar dias por hora inicio 6am hora fin 5:59am siguiente dia

Claro, pero me falta marcar mis días por hora, es decir,
primer día inicio 1/10/2013 6:00am fin 2/10/2013 5:59am--------día1
segundo día inicio 2/10/2013 6:00am fin 3/10/2013 5:59am-----día2
tercer día inicio 3/10/2013 6:00am fin 4/10/2013 5:59am---------día3

y así sucesivamente, mi consulta por un día si me sale, pero por ejemplo si quiero sacar 5 días para atrás ahí no le doy, entre ese rango de horas. Aclarando que mis horas de la base están en small time, por eso le pongo la condición de menor o mayor que 600. Y También comentarles como saber cual día es el primero, segundo, tercero, etc, se me ocurre algo asi como ROW_NUMBER() OVER(PARTITION BY DIAS ORDER BY HORAS asc) pero no se ni como ni donde meterlo.

Última edición por mariodoguez; 23/10/2013 a las 13:03
  #4 (permalink)  
Antiguo 23/10/2013, 13:19
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: filtrar dias por hora inicio 6am hora fin 5:59am siguiente dia

y un between fecha '01/01/01 06:00:00' and fecha '05/01/01 17:59:59' no te sirve? puedes poner un ejemplo de tus datos y de lo que deseas??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 23/10/2013, 14:24
 
Fecha de Ingreso: febrero-2009
Mensajes: 10
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: filtrar dias por hora inicio 6am hora fin 5:59am siguiente dia

Un between para solo el dia de inicio y el dia de fin si me sirve, seria mas o menos asi:
(diaanterior = '2013-10-01' AND hora>= 600) OR (diasiguiente = '2013-10-02' AND hora < 600)

mi fecha y mi hora las tengo separadas, para un dia esta bien, pero para una sucesión de 5 días para atrás no me funciona de manera automatica la unica solucion que se me ocurre sería algo asi
(diaanterior = '2013-10-01' AND hora>= 600) OR (diasiguiente = '2013-10-02' AND hora < 600) OR
(diaanterior = '2013-10-02' AND hora>= 600) OR (diasiguiente = '2013-10-03' AND hora < 600) OR
(diaanterior = '2013-10-03' AND hora>= 600) OR (diasiguiente = '2013-10-04' AND hora < 600) OR
(diaanterior = '2013-10-04' AND hora>= 600) OR (diasiguiente = '2013-10-05' AND hora < 600)

Pero a la hora de seleccionar los dias, no puedo agruparlos por fecha de inicio de hora de inicio 6:00am del dia 1 a hora de fin 5:59 del día 2

Etiquetas: fecha
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 02:46.