2017-06-14 4 views
2

Ich versuche, eine GQL-Abfrage zu formatieren, die Daten zwischen zwei Daten zieht. Ich habe auf mehrere vorhandene StackOverflow-Threads verwiesen (GQL SELECT by date zum Beispiel), und habe versucht, die dort gezeigte Formatierung zu folgen, aber aus irgendeinem Grund, wenn ich meine Abfrage austeste, gibt es mir einen Fehler.GQL-Fehler beim Formatieren der Datetime-Abfrage

Hier ist die Abfrage, die ich zu verwenden ist versucht:

SELECT * FROM Packets WHERE timestamp > DATETIME(2017,12,23) AND timestamp < DATETIME(2017,12,29) LIMIT 10 

Es gibt diesen Fehler:

"GQL query error: Encountered "2017" at line 1, column 50. Was expecting one of: <SINGLE_QUOTE_STRING>, <DOUBLE_QUOTE_STRING>" 

Ich habe versucht, die Daten in Strings einschließt, habe ich versucht, die Verwendung von DATE-Objekt, jedes Format, das mir einfällt, gibt mir einen Fehler. Was mache ich falsch?

Antwort

2

Der Fehler ist richtig, die DATETIME-Methode benötigt einen einzelnen Zeichenfolgenparameter.

Nach der GQL Referenz, eine DATETIME- in einer Abfrage instanziieren das Format muss 'YYYY-MM-DDThh: mm: ss.SSSSSS + zz: ZZ':

DATETIME DATETIME() represents a timestamp. must be in the time format specified in RFC 3339 section 5.6. (However, the second precision is limited to microseconds and leap seconds are omitted.) This standard format is: YYYY-MM-DDThh:mm:ss.SSSSSS+zz:ZZ ...

Ihr Beispiel funktioniert:

SELECT * FROM Packets WHERE timestamp > DATETIME('2013-09-20T09:30:20.00002-08:00') AND timestamp < DATETIME('2013-09-29T09:30:20.00002-08:00') LIMIT 10 

Sie können den vollständigen Artikel hier überprüfen: https://cloud.google.com/datastore/docs/reference/gql_reference

+0

ich das versucht, vorsichtig den Datumsbereich einstellen Einheiten übereinstimmen ich in den Daten verifiziert wurden speichern: SELECT * FROM Pakete WHERE Zeitstempel> DATETIME ('2017-04-03T09: 30: 20.00002-08: 00') UND Zeitstempel

+0

Stellen Sie sicher, dass Ihre Eigenschaft 'timestamp' indexiert ist. Wenn es nicht indiziert ist, werden keine Ergebnisse zurückgegeben und auch kein Fehler. –

+0

Ja, es ist indiziert. –

Verwandte Themen