我的sqlite原始查询需要能够根据日期与现在的距离对日期进行排序。我的sqlite语句出了什么问题?
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;
}
答案 0 :(得分:1)
假设dateday
为秒,那么您可以在SQL中完全执行此操作(您不需要Java日历)。
此查询说找到之前的前5个元素。
SELECT *
FROM timemanager_table
WHERE dateday <= strftime('%s', 'now')
ORDER BY dateday DESC
LIMIT 5
换句话说,请参阅SQLite Date & Time functions
如果dateday
采用其他格式(例如YYYY-MM-DD
),则可能需要strftime
。
如果你需要根据&#34;接近现在&#34;进行排序,那么你需要做一些日期减法。
SELECT *, dateday - strftime('%s', 'now') AS time_diff
FROM timemanager_table
ORDER BY time_diff DESC
LIMIT 5
其中将添加一个额外的列,其中包含过去的值,现在为0,以及将来的值为正值。