2009-06-15 17 views

Respuesta

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

computar los años, meses, & c, en el código de aplicación.

+0

¿cómo se obtiene un recuento de esa consulta? – erotsppa

+1

En el motor de aplicaciones de Python, se crea un GqlQuery y se llama al método .count(); no hay forma de enviar al COUNT directamente al Gql. –

+0

Y tenga en cuenta que contar es ineficiente: es O (n) con el número de entidades contadas, y en App Engine, no puede contar hasta más de 1000. –

18

Sé que dices GQL, pero aquí es una función de Python ayudante que utilizo:

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

Puede también ser una forma más concisa para escribirlo: No soy un experto en Python y se fue con la primera Lo que funcionó. Eche un vistazo a los documentos de fecha y hora si lo desea. Se utiliza la siguiente manera:

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

estoy seguro de que se puede traducir a GQL sin mucha molestia, pero yo prefiero la interfaz orientada a objetos, y no sé la sintaxis DATETIME necesario.

en Python la consulta se utiliza entonces como esto:

# 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 para la solución basada en Query –

+0

Me salvaste un gran dolor de cabeza, muchas gracias. –

Cuestiones relacionadas