2009-06-15 13 views

risposta

13
SELECT * FROM simpletable 
WHERE datefield < DATETIME(year, month, day, hour, minute, second) 

calcolo coloro anno, il mese, & c, nel codice dell'applicazione.

+0

come si ottiene un conteggio di quella query? – erotsppa

+1

In Python App Engine, si crea un GqlQuery e si chiama il metodo .count(); non c'è modo di spingere il COUNT direttamente nel Gql stesso. –

+0

E nota che il conteggio è inefficiente - è O (n) con il numero di entità contate, e in App Engine, non può contare su più di 1000. –

18

So che dici GQL, ma qui è una funzione Python aiuto io uso:

import datetime 
def seconds_ago(time_s): 
    return datetime.datetime.now() - datetime.timedelta(seconds=time_s) 

Ci può anche essere un modo più conciso di scriverlo: Io non sono un esperto di pitone e sono andato con la prima cosa che ha funzionato Dai un'occhiata ai documenti datetime se ti interessa. E 'usato in questo modo:

my_query = MyTable.all().filter("date >", seconds_ago(6*60*60)) 

sono sicuro che può essere tradotto a GQL senza molto fastidio, ma io preferisco l'interfaccia orientata agli oggetti, e non so la sintassi DATETIME necessario.

in Python query viene quindi utilizzato in questo modo:

# get a count 
my_query.count() 
# get up to 1000 records 
my_query.fetch(1000) 
# iterate over up to 1000 records 
for result in my_query: 
    # do something with result 
+0

+1 per la soluzione basata su query. –

+0

Mi hai salvato un enorme mal di testa, grazie mille. –