Sqlite按时间顺序最接近现在

时间:2017-04-08 21:28:28

标签: 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 nextTime = sqLiteDatabase.rawQuery("select  * from timemanager_table where " + seconds + " >= dateday ORDER BY dateday Limit 5",null);
    return  nextTime;
}

1 个答案:

答案 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,以及将来的值为正值。