Pregunta

Estoy trabajando en hacer algunas transferencias de datos en movimiento de datos de una base de datos a otra y me gustaría hacerlo sin usar mucha memoria en la computadora en la que estoy ejecutando este programa de transferencia de datos. Actualmente, el programa se ejecuta cada minuto, pero quiero alterar esto para que busque datos cada hora. En última instancia, quiero cambiar la siguiente consulta para que no esté obteniendo el mayor valor, sino que estoy obteniendo datos de la última hora:

SELECT Data.[Date / Time],
       DATA.[Hot Strip Mill Total],
       Data.[Basic Oxygen Furnace Total],
       Data.[Electro-Arc Furnace Total],
       Data.[J-9 Shop Total],
       Data.[Levy Maintence Building Total],
       Data.[Ford Body Shop Total],
       Data.[Ford Chiller Building Total],
       Data.[Ford Dearborn W Plant Total],
       Data.[Ford Dearborn E Plant Total], 
       Data.[Ford Dearborn Balcony Total], 
       Data.[Ford Final Assembly Total],
       Data.[Ford Frame Plant Total], 
       Data.[Ford Dearborn N Plant Total],
       Data.[Ford Tool and Die Total], 
       Data.[Ford Paint Plant Total],
       Data.[Ford Glass Plant Total], 
       DATA.[Hot Strip Mill Rate], 
       Data.[Basic Oxygen Furnace Rate], 
       Data.[Electro-Arc Furnace Rate],
       Data.[J-9 Shop Rate],
       Data.[Levy Maintence Building Rate],
       Data.[Ford Body Shop Rate],
       Data.[Ford Chiller Building Rate],
       Data.[Ford Dearborn W Plant Rate],
       Data.[Ford Dearborn E Plant Rate],
       Data.[Ford Dearborn Balcony Rate],
       Data.[Ford Final Assembly Rate],
       Data.[Ford Frame Plant Rate],
       Data.[Ford Dearborn N Plant Rate],
       Data.[Ford Tool and Die Rate],
       Data.[Ford Paint Plant Rate],
       Data.[Ford Glass Plant Rate]
       FROM DATA  
       WHERE Format(Data.[Date / Time], 'mm/dd/yyyy hh:nn:ss') >=
           (select Format(max(Data.[Date / Time]),'mm/dd/yyyy hh:nn:ss') from Data);

Como en, ahora son las 10:51:00 a.m., mi programa ahora se ejecuta que devolvería datos de más de las 09:51:00 a.m. hasta ahora, del mismo modo a las 11:51:00 a.m., devolvería datos de más de las 10:51:00 hasta las 11:51:00 am. No soy tan familiar con el acceso, pero soy bastante capaz de consultas. Este solo me tiene perdido. ¿Alguien puede ayudar a comprender cómo lograr esto? Gracias

¿Fue útil?

Solución

Desde 1 día = 1, por lo tanto 1 hora = 1/24. Así que, por diversión, incluso podrías expresar tu condición como

WHERE Data.[Date / Time] >= (Now()-1/24)

Otros consejos

Si el tipo de datos de sus datos. [Fecha / hora] es fecha / hora, no necesita aplicar formato () cuando usa los valores en una comparación basada en la fecha.

WHERE Data.[Date / Time] >= DateAdd("h",-1, Now())

Ese enfoque podría ser mucho más rápido que usar formato () con cada fila de la tabla, especialmente si el campo [Fecha / hora] está indexado.

No estoy seguro de lo que quisiste decir con esta oración:

"Del mismo modo a las 11:51:00 a.m., devuelva datos de más de las 10:51:00 hasta las 11:51:00 a.m."

Si eso significa a las 11:51:00 a.m., su tabla de datos puede incluir filas que tienen valores [fecha / hora] más tarde de las 11:51:00 a.m., puede agregar otra condición a la cláusula WHERE para excluirlas.

WHERE Data.[Date / Time] >= DateAdd("h",-1, Now()) AND Data.[Date / Time] < Now()
WHERE Format(Data.[Date / Time], 'mm/dd/yyyy hh:nn:ss') >= DateAdd("h",-2, Now())
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top