我正在Google App Engine上运行golang后端。我有一个名为Recruit
的实体,它有一个属性
UpdatedAt time.Time `datastore:"updated_at"`
我想通过更新时间查询新兵。我的第一直觉是使用filter。
query = datastore.NewQuery("Recruit").Filter("updated_at <=", updatedAt)
其中updatedAt是一个字符串。我已经尝试过表单2014-08-28 01:53:19
和2014-08-28T01:53:19.00618Z
(前者是time.Time属性在数据存储中的形式,而后者是它在JSON中的传播方式。)
当我使用<=
调用查询时,将返回所有Recruit对象。使用>=
进行调用时,将返回null。我很确定我正在测试数据集中间的时间。
当我在console.developers.google.com上测试时,控制台会过滤支持a date and time
after/before
,但尝试将<=
替换为after
会导致错误。
是否有人设法按日期或时间过滤查询?
答案 0 :(得分:4)
尝试使用timeAt类型的updateAt而不是字符串
以下是我如何设法按时间过滤查询的摘录:
我的财产:
TimeStamp time.Time
我的查询:
timeNow := time.Now()
time1hr := timeNow.Add(-59*time.Minute)
q := datastore.NewQuery("Recruit").Filter("TimeStamp <=", time1hr)
此代码会在time1hr之前给我所有实体。