Поиск дочерних значений в пределах двух дат в Firebase android

Так выглядит json

"Node" : {
      "1-5-2018" : {
        "10001" : {
          "centre" : "centre_1",
          "name" : "name_1",
          "paidAmt" : "25000"
        },
        "10002" : {
          "centre" : "centre_2",
          "name" : "name_2",
          "paidAmt" : "25000"
        },
        "10003" : {
          "centre" : "centre_3",
          "name" : "name_3",
          "paidAmt" : "10000"
        }
        },
      "2-5-2018 : {
        "10004" : {
            "centre" : "centre_4",
            "name" : "name_4",
            "paidAmt" : "20000"
            }
        }

Я хочу получить значения (центр, имя и payAmt) внутри заданных дат

Я пробовал использовать этот конкретный запрос, но он всегда показывает, что данных не существует

Query query = databaseReference1.orderByKey().startAt(fromDate.getText().toString()).endAt(toDate.getText().toString());

                query.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        if (dataSnapshot.exists()) {
                            Log.d(TAG, "Data exists within dates");
                            for(DataSnapshot ds : dataSnapshot.getChildren()) {
                                Log.d(TAG , "Data are " + ds.getValue().toString());
                            }
                        }
                        else {
                            Log.d(TAG, "Data does not exist within dates");
                        }
                    }

Пожалуйста, дайте мне знать, возможно ли получить все данные за определенные даты. В будущем я планирую добавить несколько данных в разные даты и хочу получать их в зависимости от требований. Может ежемесячно или еженедельно.

использовать TimeStamp и использовать время как долго, а не строку

Elsunhoty 01.05.2018 15:21

Считали ли вы, что упорядочивание по дате в виде строки в формате d-m-yyyy - это не тот порядок, который вам нужен? если формат был yyyy-mm-dd, это могло бы работать, но использование реальной даты или long может быть лучше.

Jan Larsen 01.05.2018 15:38

Позволяет ли firebase хранить дочернее значение так долго? При сохранении я создал ребенка с помощью datareference.child (date). Дочерняя функция принимает только строку

Varun Jain 01.05.2018 15:39

хорошо @JanLarsen Я попробую использовать формат гггг-мм-дд и проверю, работает ли он. Спасибо

Varun Jain 01.05.2018 15:40

Вы уверены, что fromDate.getText().toString() дает что-нибудь, имеющее отношение к вашему формату даты? Если он вернет любой другой формат, кроме вашего, он не будет работать.

Jan Larsen 01.05.2018 15:55

Я изменил формат на 2018-05-01 (гггг-мм-дд), и да, fromDate также находится в том же формате. Это средство выбора даты, которое я сейчас форматирую в этот формат. Снимок по-прежнему недоступен.

Varun Jain 01.05.2018 16:11

@VarunJain Не могли бы вы попробовать гггг-мм-дд в гггг / мм / дд.

Kaushal Gosaliya 03.05.2018 15:11

@KaushalGosaliya Ваше решение сработало. Я преобразовал формат даты dd-MM-yyyy в long, и он начал работать. Спасибо

Varun Jain 04.05.2018 15:48

@VarunJain, если мой ответ полезен, исправьте отметку, это может быть полезно другим.

Kaushal Gosaliya 04.05.2018 17:16
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
9
859
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы используете метку времени вместо даты, это может выглядеть так.

"Node" : {
      "1525188857" : {
        "10001" : {
          "centre" : "centre_1",
          "name" : "name_1",
          "paidAmt" : "25000"
        },
        "10002" : {
          "centre" : "centre_2",
          "name" : "name_2",
          "paidAmt" : "25000"
        },
        "10003" : {
          "centre" : "centre_3",
          "name" : "name_3",
          "paidAmt" : "10000"
        }
        },
      "1525188873" : {
        "10004" : {
            "centre" : "centre_4",
            "name" : "name_4",
            "paidAmt" : "20000"
            }
        }

Другие вопросы по теме