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。
我将日期字段存储为 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。