3

私はあるデータベースから別のデータベースにデータを移動するいくつかのデータ転送を行っていますが、このデータ転送プログラムを実行しているコンピューターのメモリをあまり使用せずにこれを実行したいと思います。現在、プログラムは1分ごとに実行されていますが、1時間ごとにデータをフェッチするように、これを変更したいと思います。最終的に、次のクエリを変更して、最大の値だけを取得するのではなく、過去1時間のデータを取得するようにします。

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 AMであり、プログラムが実行されているため、09:51:00AM以降のデータが返されます。同様に11:51:00 AMの場合、10:51:00以降のデータが返されます。 11:51:00AMまで。私はAccessにあまり詳しくありませんが、クエリにはかなりの能力があります。これは私を失ってしまいました。誰かがこれをどのように達成するかを理解するのを助けることができますか?ありがとう

4

3 に答える 3

2

Data.[Date / Time] のデータ型が Date/Time の場合、日付ベースの比較で値を使用するときに Format() を適用する必要はありません。

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

このアプローチは、テーブルのすべての行で Format() を使用するよりもはるかに高速になる可能性があります。特に [Date / Time] フィールドにインデックスが付けられている場合はそうです。

この文の意味がよくわかりません:

"同様に 11:51:00AM では、10:51:00 を超えて 11:51:00AM までのデータを返します。 "

午前 11 時 51 分 00 秒を意味する場合、[日付/時刻] 値が午前 11 時 51 分より後の行がデータ テーブルに含まれている可能性がある場合は、別の条件を 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 に答える