2014-08-28 9 views
3

Je travaille sur un backend golang exécuté sur Google App Engine. J'ai une entité appelée Recruit qui possède une propriétéComment filtrer par date/heure dans le magasin de données Google App Engine en utilisant GoLang

UpdatedAt time.Time `datastore:"updated_at"` 

Je voudrais interroger Recrues par leur temps mis à jour. Mon premier instinct est d'utiliser un filter.

query = datastore.NewQuery("Recruit").Filter("updated_at <=", updatedAt) 

où updatedAt est une chaîne. J'ai essayé les formes 2014-08-28 01:53:19 et 2014-08-28T01:53:19.00618Z (Le premier est la forme la propriété time.time prend dans le magasin de données, tandis que le second est la façon dont il se propage dans JSON.)

Quand j'appelle la requête avec <=, tous Recrue les objets sont retournés. Lors de l'appel avec >=, null est renvoyé. Je suis sûr que je suis en train de tester avec un temps au milieu de l'ensemble de données.

Quand je test sur console.developers.google.com, les filtres de la console soutiennent a date and timeafter/before, mais en essayant de remplacer <= avec after résultats dans une erreur.

Est-ce que quelqu'un a réussi à filtrer les requêtes par date ou heure?

Répondre

2

Essayez d'utiliser updatedAt de type time.time plutôt que comme une chaîne

Voici un extrait de la façon dont j'ai réussi à filtrer les requêtes par le temps:

Ma propriété:

TimeStamp time.Time 

Ma requête:

timeNow := time.Now() 
time1hr := timeNow.Add(-59*time.Minute) 
q := datastore.NewQuery("Recruit").Filter("TimeStamp <=", time1hr) 

Ce code me donnerait toutes les entités avant time1hr.

+1

Vous pouvez également trouver le temps.Parse pratique dans cette situation. Voici une bonne réponse SO montrant son utilisation: http://stackoverflow.com/questions/14106541/go-parsing-date-time-strings-which-are-not-standard-formats –

+0

Cela a fonctionné! J'ai commencé à stocker le temps comme un int, juste comme un travail autour, mais c'est beaucoup mieux. Devrait avoir prévu que le paramètre de filtre doit être du même type. @JoeBergevin, j'ai utilisé l'analyse. Travaillé comme un charme. – selljamhere

Questions connexes