我如何从Android SQLite数据库中选择所有具有DATETIME字段的特定日期?
我创建了下面的表:
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语句中生成这些值。
我真的希望有人能回答这个问题。提前感谢1。第一次以长格式在数据库中保存日期。
2。然后将这些日期与开始和结束日期进行比较,如下所示
dbDate> startTime &&dbdate & lt;endTime
其中startTime和endTime是要获取数据的范围
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';
如果你对between子句做更多的研究,在google上有很多可用的选项你也可以试试这个
`SELECT * FROM DOB WHERE birthdate BETWEEN #07/04/1996# AND #07/09/1996#;`
或
SELECT Date,dob from pb where uid=1 and Date>'2011/02/25' and Date<'2011/02/27'
,这将指导更多。
就像别人说的,省时省力。
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,单位为毫秒
我认为在你的情况下最好的解决方案,如果你只想得到指定天数之间的日期是使用SQL中的日期('现在')函数。所以,我认为这将是一个更好的解决方案,在你的情况下
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')