如何使用GoLang按Google App Engine数据存储区中的日期/时间进行过滤

时间:2014-08-28 03:51:34

标签: google-app-engine go google-cloud-datastore

我正在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:192014-08-28T01:53:19.00618Z(前者是time.Time属性在数据存储中的形式,而后者是它在JSON中的传播方式。)

当我使用<=调用查询时,将返回所有Recruit对象。使用>=进行调用时,将返回null。我很确定我正在测试数据集中间的时间。

当我在console.developers.google.com上测试时,控制台会过滤支持a date and time after/before,但尝试将<=替换为after会导致错误。

是否有人设法按日期或时间过滤查询?

1 个答案:

答案 0 :(得分:4)

尝试使用timeAt类型的updateAt而不是字符串

以下是我如何设法按时间过滤查询的摘录:

我的财产:

TimeStamp time.Time

我的查询:

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

此代码会在time1hr之前给我所有实体。