【问题标题】:How to get smallest time from database table如何从数据库表中获取最小时间
【发布时间】:2013-10-22 09:21:08
【问题描述】:

我有一个表格,其时间列采用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); 

欢迎任何建议,请帮助我

【问题讨论】:

  • 我会考虑将时间设为时间戳而不是字符串表示,这样更容易查询。
  • @Shakeeb Shaheen 请查看此链接仅获取当前时间stackoverflow.com/questions/3611059/how-to-get-the-current-time/…
  • @Carnal 你能把它放到timeStamp的小演示代码中,展示如何使用它进行日期和时间排序
  • @KarthikeyanKarthik 时间不是问题 可以轻松搞定 问题是日期和时间在一起
  • @Shakeeb Shaheen:我的意思是,在您的 SQLite 中,将 ALARM_TIME 存储为时间戳而不是字符串。然后你可以使用 System.currentTimeInMillis 来获取下一个闹钟。

标签: android sqlite simpledateformat


【解决方案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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    • 2016-05-12
    • 2015-06-16
    相关资源
    最近更新 更多