从最后一小时MS Access中选择数据

时间:2011-07-25 14:58:24

标签: ms-access hour select-query

我正在进行一些数据传输,将数据从一个数据库移动到另一个数据库,我想这样做,而不需要使用我运行此数据传输程序的计算机上的大量内存。目前该程序每分钟运行一次,但我想改变它,以便我每小时获取数据。最终,我想更改以下查询,以便我不会抓取最大值,但我抓​​住过去一小时的数据:

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 个答案:

答案 0 :(得分:2)

如果数据的数据类型。[日期/时间]是日期/时间,则在基于日期的比较中使用值时,无需应用格式()。

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

这种方法可能比使用表格的每一行使用Format()要快得多,特别是如果[日期/时间]字段被编入索引。

我不确定你对这句话的意思是什么:

同样在上午11:51:00,返回大于10:51:00至11:51:00 AM的数据。

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

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

答案 1 :(得分:2)

由于1天= 1,因此1小时= 1/24。 所以 - 只是为了好玩 - 你甚至可以表达你的状况

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

答案 2 :(得分:0)

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