我正在开发一个教程项目并使用 SQLite 数据库。我正在尝试在数据库中的 DATE
列上使用 WHERE
检索记录。但它什么也没检索到。我的代码有什么问题?
数据库助手类中的CREATE
语句
private static final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " ("
+ COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ COLUMN_DESCRIPTION + " TEXT,"
+ COLUMN_DATE + " DATE,"
+ COLUMN_DONE + " BOOLEAN)";
这就是我如何检索记录
String date = "04-22-2014";
ArrayList<Task> tasks = new ArrayList<Task>();
db = getReadableDatabase();
String query = "SELECT * FROM "+TABLE_NAME + " where "+ COLUMN_DATE + " = "+ date;
Cursor cursor = db.rawQuery(query,null);
if(cursor.moveToFirst())
{
do{
Task task = new Task();
task.setId(cursor.getInt(0));
task.setDescription(cursor.getString(1));
task.setDate(cursor.getString(2));
task.setDone(Boolean.valueOf(cursor.getString(3)));
tasks.add(task);
}
while(cursor.moveToFirst());
}
return tasks;
但它没有返回任何记录。
最佳答案
根据日期从sqlite数据库中获取数据。在根据日期插入数据和检索数据时,需要使用日期的标准格式。标准日期格式为YYYY-MM-DD。 更多信息:https://www.sqlite.org/lang_datefunc.html
试试这个..
String date = "2014-04-22";
代替
String date = "04-22-2014";
在 sqlite 中保存日期时,您需要按照上述格式设置格式。
日期和时间数据类型
SQLite 没有为存储日期和/或时间预留的存储类。相反,SQLite 的内置日期和时间函数能够将日期和时间存储为 TEXT、REAL 或 INTEGER 值:
TEXT 作为 ISO8601 字符串(“YYYY-MM-DD HH:MM:SS.SSS”)。
REAL 作为儒略日数字,自公元前 4714 年 11 月 24 日格林威治中午以来的天数。根据公历。
INTEGER 作为 Unix 时间,自 1970-01-01 00:00:00 UTC 以来的秒数。 应用程序可以选择以这些格式中的任何一种存储日期和时间,并使用内置的日期和时间函数在格式之间自由转换。
关于android - 无法在 Android 中使用 SQLite 的 DATE 列上的 WHERE 检索数据库记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35030439/