фильтр запросов flutter moor с датой
Я хочу получить поток записей, которые находятся в тот же день ввода (как и все записи с датой 23 февраля 2020 г.).
Stream<List<BloodSugar>> watchBloodSugarsInDate(DateTime date) {
return (select(bloodSugarsEntity)
..where((bp) => bp.date.equals(date)))
.map((bloodSugarsEntity) => convertEntityToModel(bloodSugarsEntity))
.watch();
}
это мой код, и он не работает, потому что dateTime объединяет дату и время. Я пробовал использовать вложенные запросы для раздельного сравнения года, месяца и дня, но не смог. Любая помощь будет очень приветствоваться.
2 ответа
Решение
bool isSameDate(bp) {
final value = bp.date;
return value.year == date.year &&
value.month == date.month &&
value.day == date.day;
}
Ты можешь получить date
от твоего row
, и просто сравните с пройденным searchDate
.
Вы должны сравнить year
с year
, month
с month
а также day
с day
:
Stream<List<BloodSugar>> watchBloodSugarsInDate(DateTime searchDate) {
return (select(bloodSugarsEntity)
..where(
(row) {
final date = row.date;
return date.year.equals(searchDate.year) &
date.month.equals(searchDate.month) &
date.day.equals(searchDate.day);
},
))
.map((bloodSugarsEntity) => convertEntityToModel(bloodSugarsEntity))
.watch();
}