【问题标题】:Selection of tasks for the current day in Room选择房间当天的任务
【发布时间】:2021-12-30 16:26:56
【问题描述】:

Room 数据库使用日期/时间字段实现 Task 类。

@ColumnInfo(name = TaskEntry.COLUMN_CREATE_DATE)
@TypeConverters({LocalDateTimeConverter.class, LDateTimeConverter.class})
private LocalDateTime createDate;
@ColumnInfo(name = TaskEntry.COLUMN_FINISH_DATE)
@TypeConverters({LocalDateTimeConverter.class, LDateTimeConverter.class})
private LocalDateTime finishDate;

实现了一个功能,用于选择今天可用但未完成的任务,但其结果被忽略,并发出完整的任务列表,但没有选定日期范围。

@Query("Select * from " + TaskEntry.TABLE_NAME
+ " where (" + TaskEntry.COLUMN_CREATE_DATE + " >= :startDayTime"
+ " or " + TaskEntry.COLUMN_FINISH_DATE + " < :endDayTime)"
+ " and " + TaskEntry.COLUMN_FINISHED + " = 0")
LiveData<List<Task>> getLiveDailyTasks(Long startDayTime, Long endDayTime);

有人怀疑这种通过转换进行比较的方法行不通,但是这还能实现吗?

【问题讨论】:

    标签: java android sql datetime android-room


    【解决方案1】:

    有人怀疑这种通过转换进行比较的方法行不通

    从 Android Studio 运行应用程序。在访问数据库后等待用户输入的同时使用App Inspection。查看TaskEntry 表中的值是否按预期存储?如果是这样,那么 TypeConverters 的可能性就起作用了。

    接下来单击“打开新查询”图标(带有镜子的表格),然后访问您的 DAO 类并单击相关@Query 旁边的相同图标,输入合适的值并单击“运行”。如果数据按预期显示,则查询正常,请查看 LiveData 方面。

    这是一种通过屏幕截图进行的演示(显然使用不同的应用程序和数据库,但时间存储时间长到精确到秒):-

    点击运行后:-

    【讨论】:

    • ScreenShot如果我有这个结果?
    • @Tas 您的查询 or &lt; finish 所以 1/1/1970 ..... 匹配尝试 AND 而不是 OR
    猜你喜欢
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    相关资源
    最近更新 更多