фильтр запросов 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();
}
Другие вопросы по тегам