Ms access 选择最近一小时的数据,MS Access

Ms access 选择最近一小时的数据,MS Access,ms-access,hour,select-query,Ms Access,Hour,Select Query,我正在做一些数据传输工作,将数据从一个数据库移动到另一个数据库,我希望这样做,而不必使用运行此数据传输程序的计算机上的太多内存。目前该程序每分钟运行一次,但我想更改它,以便每小时获取数据。最后,我希望更改以下查询,以便我不只是获取最大值,而是获取过去一小时的数据: SELECT Data.[Date / Time], DATA.[Hot Strip Mill Total], Data.[Basic Oxygen Furnace Total], Data.

我正在做一些数据传输工作,将数据从一个数据库移动到另一个数据库,我希望这样做,而不必使用运行此数据传输程序的计算机上的太多内存。目前该程序每分钟运行一次,但我想更改它,以便每小时获取数据。最后,我希望更改以下查询,以便我不只是获取最大值,而是获取过去一小时的数据:

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:00AM,我的程序现在正在运行。它将返回大于09:51:00AM到现在的数据,同样在11:51:00AM,返回大于10:51:00到11:51:00AM的数据。我不太熟悉访问权限,但我对查询相当有能力。这一个让我迷路了。有人能帮助理解如何做到这一点吗?谢谢

如果数据的数据类型。[Date/Time]是Date/Time,则在基于日期的比较中使用这些值时不需要应用Format()

WHERE Format(Data.[Date / Time], 'mm/dd/yyyy hh:nn:ss') >= DateAdd("h",-2, Now())
WHERE Data.[Date / Time] >= DateAdd("h",-1, Now())
这种方法可能比在表的每一行中使用Format()要快得多,尤其是当[Date/Time]字段被索引时

我不知道你这句话是什么意思:

同样,在11:51:00AM,返回从大于10:51:00到11:51:00AM的数据

如果这意味着在上午11:51:00,您的数据表可能包含[Date/Time]值晚于上午11:51:00的行,您可以向WHERE子句添加另一个条件以排除它们

WHERE Data.[Date / Time] >= DateAdd("h",-1, Now()) AND Data.[Date / Time] < Now()
其中Data.[Date/Time]>=DateAdd(“h”、-1,Now())和Data.[Date/Time]
因为1天=1,所以1小时=1/24。 所以-只是为了好玩-你甚至可以把你的情况说成

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

+1我喜欢这个答案促使我们思考日期/时间值实际上是什么。似乎应该有更好的方式来表达这一点,但我现在一片空白:“因为1天=1”@HansUp-不知道我在想什么。我现在有点困惑谢谢,这正是我想要的。我不知道sysdate的等价物是什么。这是我在Oracle中处理它的方式,但我不知道如何在MS Access中处理它。再次感谢