2017-06-14 4 views
2

2つの日付間でデータを取得するGQLクエリを書式設定しようとしています。私はいくつかの既存のStackOverflowスレッド(例えば、GQL SELECT by date)を参照し、そこに示されている書式に従って試してみましたが、何らかの理由で私のクエリをテストするとエラーになります。ここで日時クエリの書式設定時にGQLエラーが発生する

は、私が使用しようとしてるのクエリです:

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

それは、このエラーを与える:

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

私は、文字列の日付を囲む試してみた、私が使って試してみましたDATEオブジェクト、私が考えることができるすべての形式は私に何らかのエラーを与えます。私は間違って何をしていますか?

答えて

2

エラーは正しく、DATETIMEメソッドは単一の文字列パラメータを必要とします。

GQLリファレンスによると、クエリでDATETIMEをインスタンス化するためのフォーマットは、 '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 ...

あなたの例の作業:

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 

あなたがここに完全な記事をチェックすることができますhttps://cloud.google.com/datastore/docs/reference/gql_reference

+0

は私が確認したエンティティと一致するように、日付範囲を設定するように注意して、これを試してみましたが、データにありましたストア: *タイムスタンプ> DATETIME( '2017-04-03T09:30:20.00002-08:00')とタイムスタンプ

+0

'timestamp'プロパティがインデックスされていることを確認してください。インデックスが作成されていない場合、結果は返されず、エラーも返されません。 –

+0

はい、インデックスに登録されています。 –

関連する問題