带有日期的 flutter moor 查询过滤器

flutter moor query filter with date

我想获取同一天输入的记录流(比如所有日期为 2020 年 2 月 23 日的记录)。

Stream<List<BloodSugar>> watchBloodSugarsInDate(DateTime date) {

    return (select(bloodSugarsEntity)
          ..where((bp) => bp.date.equals(date)))
        .map((bloodSugarsEntity) => convertEntityToModel(bloodSugarsEntity))
        .watch();
  }

这是我的代码,它不起作用,因为 dateTime 是日期和时间的组合。我尝试使用嵌套查询来分别比较年、月和日,但我做不到。 任何帮助将不胜感激。

  bool isSameDate(bp) {
    final value = bp.date;

    return value.year == date.year &&
        value.month == date.month &&
        value.day == date.day;
  }

您可以从您的 row 中获得 date,并与传递的 searchDate 进行比较。

您必须将 yearyearmonthmonth 以及 dayday 进行比较:

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();
}