Frage

Ich arbeite daran, einige Datenübertragungsdaten von einer Datenbank in eine andere zu übertragen, und ich möchte dies tun, ohne viel Speicher auf dem Computer zu verwenden, auf dem ich dieses Datenübertragungsprogramm ausführe. Derzeit wird das Programm jede Minute ausgeführt, aber ich möchte dies ändern, damit ich jede Stunde Daten hole. Letztendlich möchte ich die folgende Abfrage ändern, damit ich nicht nur den größten Wert greife, sondern dass ich Daten abgreift, die aus der vergangenen Stunde stammen:

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

Wie in ist es jetzt um 10:51:00 Uhr, mein Programm wird jetzt ausgeführt. Es wird jetzt Daten von mehr als 09:51:00 bis jetzt, ebenfalls um 11:51:00 Uhr, zurückgeben, die Daten von mehr als 10:51:00 Uhr zurückgeben Bis 11:51:00 Uhr. Ich bin nicht so familiär mit dem Zugang, aber ich bin ziemlich fähig mit Fragen. Dieser hat mich nur verloren. Kann jemand helfen, zu verstehen, wie dies erreicht ist? Vielen Dank

War es hilfreich?

Lösung

Da 1 Tag = 1 ist, also 1 Stunde = 1/24. Also - nur zum Spaß - können Sie sogar Ihren Zustand als ausdrücken als

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

Andere Tipps

Wenn der Datentyp Ihrer Daten. [Datum / Uhrzeit] Datum / Uhrzeit ist, müssen Sie Format () nicht anwenden, wenn die Werte in einem date-basierten Vergleich verwendet werden.

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

Dieser Ansatz könnte viel schneller sein als mit Format () mit jeder Zeile der Tabelle, insbesondere wenn das Feld [Datum / Uhrzeit] indiziert ist.

Ich bin mir nicht sicher, was Sie mit diesem Satz gemeint haben:

"Ebenso um 11:51:00 Uhr geben Sie Daten von mehr als 10:51:00 bis 11:51:00 Uhr zurück."

Wenn dies um 11:51:00 Uhr bedeutet, dass Ihre Datentabelle Zeilen enthalten kann, die später als 11:51:00 Uhr [Datum / Uhrzeit] Werte haben, können Sie der Klausel, um sie auszuschließen, eine weitere Bedingung hinzufügen.

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())
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top