【问题标题】:Compare times in SQLite比较 SQLite 中的时间
【发布时间】:2012-03-09 02:56:25
【问题描述】:

我在 Android 中使用 SQLite 以这种格式存储时间戳:yyyy-MM-dd HH:mm:ss 我想将时间戳的时间与一些值进行比较,例如。 HOUR(timestamp)>12 等,但 HOUR 在 SQLite 中不是合法函数。我已按如下所述对其进行了更改,并且有如下内容:" where "+" strftime('%H','"+timeStamp+"')>"+time1+" AND strftime('%H','"+timeStamp+"')<'"+time2; 其中 time1 和 time2 是 0-23 之间的整数。我在表中有 7 个条目,因此有 7 个时间戳。但是我得到了 0 个结果......

【问题讨论】:

    标签: android datetime sqlite timestamp


    【解决方案1】:

    你可以试试

    SELECT strftime('%H', 'now');
    

    SELECT strftime('%H', columnName);
    

    输出将是 0 到 24

    【讨论】:

    • 那么我如何包含我的时间戳?
    • 顺便说一句:SQLite 使用动态类型。如果一个操作数是 REAL 或 INTEGER,它将尝试将 TEXT 转换为数字。你也可以使用 CAST(expr as type)
    • 谢谢..它没有崩溃,但我没有得到任何结果..我有类似“strftime('%H','"+timeStamp+"')>"+time1+" AND strftime( '%H','"+timeStamp+"')
    • 你能做一个 SELECT strftime('%H', columnName);看看结果如何
    【解决方案2】:

    如果时间戳在你想要的表中:

    String time1 = 0;
    String time2 = 12;    
    String query = "select timestamp from table where strftime('%H',timestamp) < " +
           time1 +
           " and strftime('%H',timeStamp) < " +
           time2 +
           ";";
    

    【讨论】:

    • 这就是我拥有它的方式,除了 rawQueries 中不需要的分号。
    • time1 和 time2 是字符串还是整数?
    • time1 和 time2 可以是 int 或 String 类型。
    猜你喜欢
    • 1970-01-01
    • 2021-08-17
    • 2017-04-14
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    相关资源
    最近更新 更多