【问题标题】:Query to get all dates between 2 given dates查询以获取 2 个给定日期之间的所有日期
【发布时间】:2014-08-11 07:44:24
【问题描述】:

我试图从数据存储(appengine)中获取两个给定日期之间的所有日期,我发现这个查询给出了升序和降序日期,但我需要介于两者之间的日期

Query q = new Query("Employee Attendance Sheet test1").addSort("Date", Query.SortDirection.ASCENDING);

如果有某种方式可以混合升序和降序查询

我也发现了这些代码

query.setFilter("dateField < dateParam");

但是 setFilter 函数告诉我它不接受字符串。怎么了?

【问题讨论】:

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


【解决方案1】:

如果您只有 一个 日期字段要检查它是否属于某个时间段(在两个给定日期之间),那么您可以简单地使用带有复合过滤器的查询:

Filter startDateFilter = new FilterPredicate("dateField",
                         FilterOperator.GREATER_THAN_OR_EQUAL,
                         startDate);

Filter endDateFilter = new FilterPredicate("dateField",
                       FilterOperator.LESS_THAN_OR_EQUAL,
                       endDate);

Filter dateFilter = CompositeFilterOperator.and(startDateFilter, endDateFilter);

Query q = new Query("EntityName").setFilter(dateFilter);

【讨论】:

  • 我已经尝试过了 .. 它给出了一个 servlet 错误 .. startDate 和 endDate 应该是 Date 类型吧?
  • 是的,如果要按日期查询,则需要保存为Date。
  • 谢谢彼得的回复..问题不在于查询本身..您的建议很有用..问候
猜你喜欢
  • 1970-01-01
  • 2015-05-20
  • 2019-06-19
  • 1970-01-01
  • 2013-08-09
  • 2011-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多