我想查询SQLite表并获取记录,其中时间字段(以毫秒为单位表示长时间的字符串)在查询时间的明天范围内。
我也有一个保存记录日期时间的字段,如下所示:
dd / MM / yyyy,HH:mm:ss
您如何建议实施此方法?
最佳答案
根据您的评论,您可以修改架构以获得更好的性能。因此,最好在数据库中保存时间尽可能长(unix时间戳)并在其上建立索引。完成此操作后,您只需在当地时区的00:00处获取明天的日期,然后将其转换为unix时间戳并根据该日期进行查询。您可以通过以下方法获取明天00:00的时间戳,
public static long getTimeStampAt0000(long timestamp) {
Calendar givenDate = Calendar.getInstance();
givenDate.setTimeInMillis(timestamp);
givenDate.set(Calendar.HOUR_OF_DAY, 0);
givenDate.set(Calendar.MINUTE, 0);
givenDate.set(Calendar.SECOND, 0);
givenDate.set(Calendar.MILLISECOND, 0);
return givenDate.getTimeInMillis();
}
public static long getTimeStampAt0000ForTomorrow() {
long now = System.currentTimeMillis();
long nowAt0000 = getTimeStampAt0000(now);
if (now == nowAt0000) {
// if being queried at 00:00, we are assuming we want same or else we can just remove
// this condition
return nowAt0000;
} else {
return nowAt0000 + 86400000;
}
}