我想查询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;
  }
}

10-07 19:25
查看更多