Azh*_*san 2 timestamp date flutter google-cloud-firestore
我有一个 firestore 集合“订单”,其文档具有时间戳值。我想根据时间戳过滤该集合的文档。例如,过滤 2022 年 7 月 1 日下的订单。我将从 Datepicker 获取的日期值作为 DateTime 传递。我形成的查询是
_db.collection('orders')
.where('driverId', isEqualTo: sp.getString('uid'))
.where('timeStamp', isGreaterThanOrEqualTo: Timestamp.fromDate(pickedDate!))
.get().then((querySnapshot){
querySnapshot.docs.forEach((element) {
orders.add(element.data());
});
print(orders.length);
});
Run Code Online (Sandbox Code Playgroud)
问题是我从 7 月 1 日到今天收到订单,因为我已经给出了isGreaterThanOrEqualTo。但如果我给出isEqualTo,它不会返回任何内容。我猜这意味着需要01-07-2022 00:00:00。那么获取选定日期订单的正确查询是什么?
TimestampFirestore 中的对象是非常具体的时间点,具有微秒精度。因此,如果您想匹配一整天的所有时间戳,那就是时间戳值的范围。
典型的方法是创建一天后的时间戳,然后将其添加到该范围所需的第二个子句中:
_db.collection('orders')
.where('driverId', isEqualTo: sp.getString('uid'))
.where('timeStamp', isGreaterThanOrEqualTo: Timestamp.fromDate(pickedDate!))
.where('timeStamp', isLessThan: timestampOfStartOfNextDay)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1261 次 |
| 最近记录: |