Clould Firestore - запросы с полями типа даты - PullRequest
0 голосов
/ 02 апреля 2019

У меня проблемы с выполнением запросов с типом даты (отметка времени). Каким будет правильный способ запроса полей даты в 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", но в настоящее время он не находит значений.

1 Ответ

0 голосов
/ 02 апреля 2019

Чтобы иметь возможность запрашивать базу данных Firestore на основе временной метки, вам необходимо передать где CollectionReference (FieldPath fieldPath, значение объекта) метод объект Date. Передав строку (как вы сейчас делаете), ваш запрос не будет работать.

Запрос, который будет работать, должен выглядеть следующим образом:

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(/* ... */);

Если вы хотите добавить метку времени программно, просим посмотреть мой ответ по следующему коду:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...