Android Room 获得昨天的最后记录

Posted

技术标签:

【中文标题】Android Room 获得昨天的最后记录【英文标题】:Android Room getting yesterday's last record 【发布时间】:2021-10-07 18:11:03 【问题描述】:

我将日期字段作为日期字段存储在 android Room 中。当然它会转换为时间戳以将日期存储在 sqlite 数据库中。

看起来像这样:

我需要获取昨天的最新记录和今天的最后一条记录(今天将是另一个查询,不在同一个查询中)。

正如您在屏幕截图中看到的那样,第一个是昨天的,其他的是今天的。所以在这个表中,我需要两个查询来获取 id: 1 和 id: 3 记录。

我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

您必须使用函数 date() 将 unix 纪元时间戳转换为日期,以便您可以过滤表中昨天和今天的行。 然后按日期分组并使用 SQLite 的功能为每个日期返回最大 parseDate 的行:

SELECT id, trackid, MAX(parseDate) parseDate
FROM tablename
WHERE date(parseDate / 1000, 'unixepoch') BETWEEN date(CURRENT_DATE, '-1 day') AND CURRENT_DATE
GROUP BY date(parseDate / 1000, 'unixepoch');

或者,如果没有日期晚于今天的行,您可以简化 WHERE 子句:

WHERE date(parseDate / 1000, 'unixepoch') >= date(CURRENT_DATE, '-1 day')

请参阅demo。

【讨论】:

以上是关于Android Room 获得昨天的最后记录的主要内容,如果未能解决你的问题,请参考以下文章

Android Room Database,检索输入的最新记录的特定值

什么是安卓X?

Android Room联合AsyncListUtil实现RecyclerView分页加载ORM数据

Android初识系列-Room,我来了~避雷指南

Android开发笔记(一百七十五)利用Room简化数据库操作

Android开发笔记(一百七十五)利用Room简化数据库操作