MySQL - Consulta con horas

 
Vista:
sin imagen de perfil
Val: 2
Ha disminuido su posición en 13 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Consulta con horas

Publicado por Eduardo Alvarado (2 intervenciones) el 28/06/2019 03:54:58
Tengo una duda a ver si me pueden decir como resolverlo
Les explico... Se supone que en mi sistema se va llenar por hora un reporte de produccion
Pero hay dos turnos...
Primero y Noveno
Mi primer turno empieza a las 6;40am de la ma;ana y termina a las 4;10pm de la tarde
y el otro turno noveno empieza 4;10pm y termina a las 6;40am
Mi duda es como generaría yo un reporte de el primero turno de lo registrado...?
Yo lo quería manejar por fecha de un día pero como el turno es así, ya son dos días y tengo duda en la consulta

O cual seria la manera para decir...
dame la producción del día 27 de junio 2019 de 4:10pm al día 28 de junio a las 6:40am...

Que ya estaría manejando dos fechas, no se si yo pueda hacer una consulta con fecha y hora
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 Vega
Val: 69
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Consulta con horas

Publicado por Vega (30 intervenciones) el 28/06/2019 10:43:22
Hola Eduardo,

Un mandera bastante útil de solucional tu dilema es mediante el empleo dos tablas que te serviran de base para cualquier consulta temporal. El concepto es básico en el modelado dimensional de datos y consiste en tener a mano una dimension que contiene fechas entre un rango de fechas y otra un registro de tiempo en un día (hh:mm:ss). Para la tabla de tiempo es mejor definir el grado de precisión de tiempo que requires habitualmente, es decir, te vale que sólo tenga las 24 horas de un dia, o también necesitas minutos y segundos.


Cuando tengas esta dos tablas definidas las juntas con un cross join para crear un conjunto que puedes unir con la información que necesitas consultar.


pseudo código para esta idea seria algo así:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
; with Fecha as (
cte recursivo para generar fechas entre dos límites
),
Hora as (
cte recursivo para tiempo durante 24 horas
),
 
FechaHora as
 (
 Select Fecha, Hora
from Fecha F
 
cross join Hora H
 
where fecha >= '2019-05-01' and fecha >= getdate()/Today()/'2019-05-20'
 
)
 
 
select FH.Fecha, FH.Hora, TD.*
 
From FecharHora FH
left join TusDatos TD. ON FH.FECHA = TD.FECHA AND {CONDICTIONES DE HORA AQUI}
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