2011-07-25 19 views
3

我正在做一些數據傳輸,將數據從一個數據庫移動到另一個數據庫,我想這樣做而不使用計算機上的大量內存來運行此數據傳輸程序上。目前該程序每分鐘運行一次,但我想改變這一點,以便每小時讀取數據。最後,我想改變下面的查詢,這樣我不斂只是最值,但是,我抓住的數據是從過去一小時:從最近一小時選擇數據,MS Access

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

如,現在是上午十時51分00秒,我的程序現在正在運行,它將從大於09:51:00 AM到現在返回數據,同樣在上午11:51:00,返回數據的時間大於10:51:00,直到上午11:51:00。我不是那種和Access家族相似的人,但我相當有能力進行查詢。這只是讓我失去了。任何人都可以幫助理解如何做到這一點?由於

回答

2

由於1天= 1,所以1小時= 1/24。 所以 - 只是爲了好玩 - 你甚至可以表達你的病情爲

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

+1我喜歡這個答案促使我們思考什麼是日期/時間值實際上。似乎應該有更好的方式來說這個,但我畫了一個空白:「自1天= 1」 – HansUp

+0

@HansUp - 不知道我在想什麼。我現在有點困惑 – Aducci

+0

謝謝,這正是我所期待的。我不知道sysdate的等價物是什麼。這是我在Oracle中處理它的方式,但我不知道如何在MS Access中。再次感謝 –

0
WHERE Format(Data.[Date/Time], 'mm/dd/yyyy hh:nn:ss') >= DateAdd("h",-2, Now()) 
+1

使用的格式可以防止查詢優化和索引使用。 –

2

如果您的數據。[日期/時間]的日期/時間,你不需要()使用的值時,在基於日期的比較適用格式的數據類型。

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

這種方法可能比使用格式()與表的每一行快得多,特別是如果[日期/時間]字段建立索引。

我不知道你這句話是什麼意思:「同樣在上午11時51分00秒,返回大於10:51:00的數據,直到上午11時51分00秒

如果這意味着在上午11:51:00您的數據表可能包含[Date/Time]值晚於11:51:00 AM的行,則可以向WHERE子句添加另一個條件以排除它們。

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