Java 最接近现在的时间的Sqlite订单
我的sqlite原始查询需要能够根据日期与现在的距离对日期进行排序。我的sqlite语句有什么问题Java 最接近现在的时间的Sqlite订单,java,android,sqlite,android-sqlite,Java,Android,Sqlite,Android Sqlite,我的sqlite原始查询需要能够根据日期与现在的距离对日期进行排序。我的sqlite语句有什么问题 public Cursor GetFirstTime(){ Calendar c = Calendar.getInstance(); int seconds = c.get(Calendar.MILLISECOND); SQLiteDatabase sqLiteDatabase = this.getWritableDatabase(); Cursor nextTim
public Cursor GetFirstTime(){
Calendar c = Calendar.getInstance();
int seconds = c.get(Calendar.MILLISECOND);
SQLiteDatabase sqLiteDatabase = this.getWritableDatabase();
Cursor nextTime = sqLiteDatabase.rawQuery("select * from timemanager_table where " + seconds + " >= dateday ORDER BY dateday Limit 5",null);
return nextTime;
}
假设
dateday
是秒,那么您完全可以在SQL中完成这项工作(您不需要Java日历)
此查询表示查找以前的前5个元素
SELECT *
FROM timemanager_table
WHERE dateday <= strftime('%s', 'now')
ORDER BY dateday DESC
LIMIT 5
这将添加一个附加列,其中过去为负值,现在为0,未来为正值
dateday
以毫秒为单位吗?为什么要将一个名为“seconds”的变量指定给毫秒?所以,如果表中的行过去是10分钟和5分钟,未来是3分钟和7分钟,那么“根据日期与现在的距离排序日期”应该对它们进行排序:3(未来)、5(过去)、7(未来)、10(过去)?如果不是,那么你只需要一个普通的排序,“接近现在”没有任何意义。这个问题还不清楚。你在处理过去、现在和未来的时刻吗?如果是,请回复Andreas的评论。
SELECT *, dateday - strftime('%s', 'now') AS time_diff
FROM timemanager_table
ORDER BY time_diff DESC
LIMIT 5