Так выглядит 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");
}
}
Пожалуйста, дайте мне знать, возможно ли получить все данные за определенные даты. В будущем я планирую добавить несколько данных в разные даты и хочу получать их в зависимости от требований. Может ежемесячно или еженедельно.
Считали ли вы, что упорядочивание по дате в виде строки в формате d-m-yyyy - это не тот порядок, который вам нужен? если формат был yyyy-mm-dd, это могло бы работать, но использование реальной даты или long может быть лучше.
Позволяет ли firebase хранить дочернее значение так долго? При сохранении я создал ребенка с помощью datareference.child (date). Дочерняя функция принимает только строку
хорошо @JanLarsen Я попробую использовать формат гггг-мм-дд и проверю, работает ли он. Спасибо
Вы уверены, что fromDate.getText().toString() дает что-нибудь, имеющее отношение к вашему формату даты? Если он вернет любой другой формат, кроме вашего, он не будет работать.
Я изменил формат на 2018-05-01 (гггг-мм-дд), и да, fromDate также находится в том же формате. Это средство выбора даты, которое я сейчас форматирую в этот формат. Снимок по-прежнему недоступен.
@VarunJain Не могли бы вы попробовать гггг-мм-дд в гггг / мм / дд.
@KaushalGosaliya Ваше решение сработало. Я преобразовал формат даты dd-MM-yyyy в long, и он начал работать. Спасибо
@VarunJain, если мой ответ полезен, исправьте отметку, это может быть полезно другим.




Вы используете метку времени вместо даты, это может выглядеть так.
"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"
}
}
использовать TimeStamp и использовать время как долго, а не строку