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,检索输入的最新记录的特定值
Android Room联合AsyncListUtil实现RecyclerView分页加载ORM数据