Выберите данные за последний час, MS Access - PullRequest
3 голосов
/ 25 июля 2011

Я работаю над передачей некоторых данных, перемещая данные из одной базы данных в другую, и я хотел бы сделать это, не используя слишком много памяти на компьютере, на котором я запускаю эту программу передачи данных. В настоящее время программа запускается каждую минуту, но я хочу изменить это так, чтобы я получал данные каждый час. В конечном счете, я хочу изменить следующий запрос, чтобы я получал не только наибольшее значение, но и данные за прошедший час:

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);

Как и сейчас, сейчас 10:51:00, моя программа сейчас работает, она будет возвращать данные с более чем 09:51:00 до настоящего момента, аналогично в 11:51:00, возвращать данные с более чем 10: С 51:00 до 11:51:00 Я не настолько знаком с Access, но я вполне способен с вопросами. Этот только что потерял меня. Может кто-нибудь помочь понять, как это сделать? Спасибо

Ответы [ 3 ]

2 голосов
/ 25 июля 2011

Если тип данных ваших данных [Дата / Время] равен дате / времени, вам не нужно применять Format () при использовании значений в сравнении на основе даты.

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

Этот подход может быть намного быстрее, чем использование Format () для каждой строки таблицы, особенно если индексировано поле [Дата / Время].

Я не уверен, что вы имели в виду с этим предложением:

" Аналогично в 11:51:00, верните данные с более чем 10:51:00 до 11:51:00 AM. "

Если это означает в 11:В 51:00 AM ваша таблица данных может содержать строки, которые имеют значения [Date / Time] позже 11:51:00 AM, вы можете добавить еще одно условие в предложение WHERE, чтобы исключить их.

WHERE Data.[Date / Time] >= DateAdd("h",-1, Now()) AND Data.[Date / Time] < Now()
2 голосов
/ 25 июля 2011

С 1 дня = 1, следовательно, 1 час = 1/24.Так что - просто для удовольствия - вы даже можете выразить свое состояние как

WHERE Data.[Date / Time] >= (Now()-1/24)
0 голосов
/ 25 июля 2011
WHERE Format(Data.[Date / Time], 'mm/dd/yyyy hh:nn:ss') >= DateAdd("h",-2, Now())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...