如何从特定日期有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语句中生成这些值。
我真的希望有人能回答这个问题。 提前致谢
答案 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')