【问题标题】:How to query only date (not time) in cloud firestore?如何在云 Firestore 中仅查询日期(而不是时间)?
【发布时间】:2019-07-21 11:14:18
【问题描述】:

我想查询时间戳字段上的 Firestore 集合,但只查询日期(不是时间)。例如,我的数据库中有三条记录,如下所示:

  1. 2019 年 7 月 7 日 06:40:00 UTC+5:30
  2. 2019 年 7 月 9 日 03:58:00 UTC+5:30
  3. 2019 年 7 月 11 日 07:00:00 UTC+5:30

当我尝试使用 07/07/2019 到 09/07/2019 查询时,结果只显示 1 条记录,而不是 2 条。我认为是时间问题。

我检查了此链接 (Firestore query by dates and times separately),但它与我的查询无关。

我的代码查询:

Date dateFrom = "21/07/2019";
Date dateTo = "24/07/2019";
Query MyQuery = mFirestore.collection("students")
.whereGreaterThanOrEqualTo("entered", dateFrom)
.whereLessThanOrEqualTo("entered", dateTo);

我认为这是由于数据库中的时间不同。请帮我解决这个问题。

【问题讨论】:

  • 来自您链接的问题:“在 NoSQL 数据库中复制数据是很常见的,特别是为了允许根据您的业务需求进行查询。” 那么为什么不添加一个只有日期和过滤器的字段?
  • 感谢您的评论。但我通过根据@Ban Markovic 的评论简单地将 1 添加到“toDate”来解决了这个问题。

标签: android firebase google-cloud-firestore


【解决方案1】:

问题是当您在查询中传递日期时,它会自动附加 00:00:00 时间。因此,如果您想查询 07/07/2019 到 09/07/2019,我建议您尝试在最后一个日期上再增加 1 天。因此,在这个特定示例中,您应该将 07/07/2019 设置为 10/07/2019。或者也许另一种解决方案是在第二个日期 23:59:59 时间戳附加。

【讨论】:

  • 解决了!感谢您的帮助:)
  • 很高兴我能帮上忙 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-05
  • 1970-01-01
  • 2021-07-15
  • 2015-04-25
相关资源
最近更新 更多