如何从数据库表中获取最小的时间

时间:2013-10-22 09:21:09

标签: android sqlite simpledateformat

我有一个包含yyyy-MM-dd:HH:mm格式的时间列的表。我想得到最接近当前时间和日期的时间值。我能够得到最接近当前时间的时间值但不是约会。

这就是我正在做的事情

    SimpleDateFormat mSDFmSDF = new SimpleDateFormat("HH:mm");//yyyy-MM-dd:HH:mm not working
    Calendar calSet = Calendar.getInstance();
    TimeZone tz = TimeZone.getDefault();
    mSDF.setTimeZone(tz);
    String time = mSDF.format(calSet.getTime());
    Cursor selectedtime = mDB.rawQuery("SELECT " + ALARM_TIME + " FROM "
            + ALARM_TABLE + " WHERE " + ALARM_TIME + " >=  '" + time
            + "' ORDER BY " + ALARM_TIME + " LIMIT 1 ;", null); 

欢迎各位建议,请帮助我

1 个答案:

答案 0 :(得分:1)

要对日期/时间执行算术,SQLite提供JULIANDAY函数,该函数会将您的日期转换为FLOAT

所以,

SELECT ABS(JULIANDAY(SUBSTR(alarm_time,1,5)||' '||SUBSTR(alarm_time,-5))-JULIANDAY('NOW')), * FROM alarm_table;

会将时间差异(以天为单位)从alarm_time返回到当前时间。

但是,如果您将来只需要最近的时间,那么简单的比较就足够了:

SELECT * FROM alarm_table WHERE alarm_time>=STRFTIME('%Y-%m-%d:%H:%M','NOW')
ORDER BY alarm_time LIMIT 1;