Domanda

Sto lavorando a fare alcuni trasferimenti di dati spostamento dei dati da un database all'altro e vorrei fare questo senza usare per quantità di memoria nel computer che sto facendo funzionare questo programma di trasferimento dei dati su. Attualmente il programma è stato eseguito ogni minuto, ma voglio alterare questo in modo che io sono il recupero dei dati ogni ora. In ultima analisi, voglio cambiare la seguente query in modo che non sto afferrando solo il massimo valore, ma che sto afferrando i dati dalla quale dista nell'ultima ora:

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

Come in, ora è 10:51:00, il mio programma è ora in esecuzione sarebbe restituire i dati da maggiore di 09:51:00 fino ad ora, allo stesso modo alle 11:51:00, dati di ritorno dal superiore a 10: 51:00 fino 11:51:00. Io non sono che famililar con Access, ma sono abbastanza capace con le query. Questo uno appena mi ha perso. Qualcuno può aiutare a capire come ottenere questo risultato? Grazie

È stato utile?

Soluzione

Dal 1 giorno = 1, quindi 1 ora = 1/24. Così -solo per divertimento - si potrebbe anche esprimere la vostra condizione

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

Altri suggerimenti

Se il tipo di dati dei dati. [Data / Ora] è Data / Ora, non è necessario applicare Format () quando si utilizzano i valori in un confronto su base cronologica.

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

Questo approccio potrebbe essere molto più veloce rispetto all'utilizzo di Format () con ogni riga della tabella, in particolare se il campo [Data / Ora] è indicizzato.

Non sono sicuro di quello che volevi dire con questa frase:

" Analogamente alle 11:51:00, dati di ritorno dal maggiore 10:51:00 fino 11:51:00. "

Se questo significa a 11:51:00 AM vostra tabella dei dati può comprendere le righe che hanno [Data / Ora] valori più tardi 11:51:00, è possibile aggiungere un'altra condizione alla clausola WHERE per escluderli.

WHERE Data.[Date / Time] >= DateAdd("h",-1, Now()) AND Data.[Date / Time] < Now()
WHERE Format(Data.[Date / Time], 'mm/dd/yyyy hh:nn:ss') >= DateAdd("h",-2, Now())
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top