3

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

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 不是很熟悉,但我很擅长查询。这个只是让我失去了。谁能帮助理解如何做到这一点?谢谢

4

3 回答 3

2

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

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

这种方法可能比对表的每一行使用 Format() 快得多,尤其是在 [Date / Time] 字段被索引的情况下。

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

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

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

WHERE Data.[Date / Time] >= DateAdd("h",-1, Now()) AND Data.[Date / Time] < Now()
于 2011-07-25T15:23:22.477 回答
2

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

WHERE Data.[Date / Time] >= (Now()-1/24)
于 2011-07-25T15:42:01.767 回答
0
WHERE Format(Data.[Date / Time], 'mm/dd/yyyy hh:nn:ss') >= DateAdd("h",-2, Now())
于 2011-07-25T15:12:12.990 回答