Android和SQLite - 选择2个日期时间之间的所有内容

时间:2014-03-20 13:41:02

标签: android sqlite datetime

如何从特定日期有DATETIME字段的Android SQLite数据库中选择所有内容?

我创建了下表:

private static final String DATABASE_CREATE = "" +
            "create table " + TABLE_STATISTIC + " (" 
              + COLUMN_STATISTIC_ID + " integer primary key autoincrement, " 
              + COLUMN_STATISTIC_DATETIME + " DATETIME default current_timestamp, "
              + COLUMN_STATISTIC_SERVICED + " integer not null, "
              + COLUMN_STATISTIC_CATEGORY + " integer); ";

如您所见,它有一个DATETIME字段。我需要从当天开始到当天结束之间获取DATETIME之间的所有数据。

如何做到这一点?我无法找到如何在java / android中或直接在SQL语句中生成这些值。

我真的希望有人能回答这个问题。 提前致谢

5 个答案:

答案 0 :(得分:1)

1.首先在数据库中以长格式保存日期。

2.然后将这些日期与开始和结束日期进行比较,如下所示

dbDate> startTime&& dbdate< ENDTIME

其中startTime和endTime是您要获取数据的范围

答案 1 :(得分:1)

SQLite没有真正的日期/时间类型,但将所有内容存储为字符串。当且仅当字符串具有YYYY-MM-DD HH:MM:SS格式时,字符串才被接受为SQLITE中的日期。

current_timestamp:此函数还以上面给出的格式获取当前日期时间。

SELECT * FROM TABLE_STATISTIC WHERE COLUMN_STATISTIC_DATETIME BETWEEN '2014-01-01 13:42:03' AND '2014-03-20 13:42:03';

答案 2 :(得分:0)

如果您对 子句进行更多研究,Google上有很多选项可用 你也可以尝试这个

`SELECT * FROM DOB WHERE birthdate BETWEEN #07/04/1996# AND #07/09/1996#;`

OR

SELECT Date,dob from pb where uid=1 and Date>'2011/02/25' and Date<'2011/02/27'

this会引导更多。

答案 3 :(得分:0)

正如其他人所说,节省时间。

private static final String DATABASE_CREATE = "" +
            "create table " + TABLE_STATISTIC + " (" 
              + COLUMN_STATISTIC_ID + " integer primary key autoincrement, " 
              + COLUMN_STATISTIC_DATETIME + " integer not null, "
              + COLUMN_STATISTIC_SERVICED + " integer not null, "
              + COLUMN_STATISTIC_CATEGORY + " integer); ";

然后在你的选择中

"Select * from " + TABLE_STATISTIC + " where " + COLUMN_STATISTIC_DATETIME + " > " + startTime " AND " COLUMN_STATISTIC_DATETIME + " < " + endTime + ";"

将startTime和endTime添加到您的函数中,这些应该是millis

答案 4 :(得分:0)

我认为在您的情况下,如果您只想在指定的天数之间获取日期的最佳解决方案是在SQL中使用date('now')函数。所以,我认为这将是一个更好的解决方案

SELECT * FROM TABLE_STATISTIC WHERE COLUMN_STATISTIC_DATETIME BETWEEN DATE('now') and 
DATE('now','1 day')

并且,如果您想要考虑设备的本地时间进行比较,您可以使用以下

SELECT * FROM TABLE_STATISTIC WHERE COLUMN_STATISTIC_DATETIME BETWEEN DATE('now','localtime') and DATE('now','1 day','localtime')