我有一个Android应用程序,当某些事件发生时,我会将条目写入基本上(在伪代码中)db.putLong(System.currentTimeMillis());
的数据库。我正在尝试根据这些时间戳查看数据库。以下代码似乎在lookBackHours
为24时有效,但在值达到600或700时返回0。
long timeStamp = System.currentTimeMillis() - (ONE_MINUTE*60*lookbackHours);
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor result = db.rawQuery("SELECT * FROM WorkLog WHERE dutyDayStart>="+timeStamp, null);
result.moveToFirst();
int count = result.getCount();
public static final int ONE_MINUTE = (60*1000);
逻辑是:使用timeInMillis标记记录。要查找时间范围内的记录,找到当前时间,减去一定数量的hours*millisPerHour
(我感兴趣的最远的记录),返回时间戳为>的值。我感兴趣的最远的记录。我不明白为什么它不能正常工作。
答案 0 :(得分:1)
你说的很长,但我猜你从dB读取int? (没有为该部分提供代码)。 600-700 lookbackhours命中你可以存储在32位int的最大值,这就是你回来的原因。
答案 1 :(得分:0)
也许是溢出。
将int ONE_MINUTE
更改为long ONE_MINUTE
Cange ONE_MINUTE*60*lookbackHours
到ONE_MINUTE*60L*lookbackHours
确保lookbackHours
很长