我很难执行日期类型(时间戳)的查询。在cCoud Firestore中查询日期字段的正确方式将是什么?
String created_view = editTextDataFilter.getText().toString();
String time_variable= "";
try {
time_variable= new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.ENGLISH).format(new SimpleDateFormat(
"dd/mm/yyyy", Locale.ENGLISH).parse(created_view));
}catch (ParseException e){}
db.collection("Students")
.whereGreaterThan("created_at", time_variable)
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
alunosList.add(
new Students(
document.getString("name").toUpperCase(),
document.getString("classroom"),
document.getDate("created_at")));
recyclerView.setAdapter(adapter);
}
}
else {
Log.w(TAG, "Error getting documents.", task.getException());
}
}
});
}
我希望输出带来的记录的日期大于在“ time_variable”中输入的值,但目前找不到值。
答案 0 :(得分:0)
为了能够基于时间戳查询Firestore数据库,您需要将Date
对象传递给CollectionReference的whereGreaterThan(FieldPath fieldPath, Object value)方法。传递一个字符串(如您当前所做的那样),将无法使您的查询正常工作。
将起作用的查询应如下所示:
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = dateFormat.parse(created_view);
db.collection("Students")
.whereGreaterThan("created_at", date)
.get()
.addOnCompleteListener(/* ... */);
如果要以编程方式添加时间戳,请从以下代码中查看我的答案: