Android 房间正在获取昨天的最后一条记录

Android Room getting yesterday's last record

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

看起来像这样:

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

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

我怎样才能做到这一点?

您必须使用函数 date() 将 unix 纪元时间戳转换为日期,以便您可以过滤 table 昨天和今天的行。
然后按日期分组并使用 SQLite 的功能 return 为每个日期具有最大 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