无法在 Android 中使用 SQLite 的 DATE 列上的 WHERE 检索数据库记录
Cannot retrieve database record using WHERE on DATE column of SQLite in Android
我正在开发一个教程项目并使用 SQLite 数据库。我正在尝试使用数据库中 DATE
列上的 WHERE
检索记录。但它什么也没检索到。我的代码有什么问题?
数据库助手class
中的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;
但它没有返回任何记录。
试试这个
String query = "SELECT * FROM "+TABLE_NAME + " where "+ COLUMN_DATE + " = "+ "'"+date+"'";
要从基于Date.You 的sqlite 数据库中获取数据需要使用标准日期格式,而基于date.The 标准日期格式是YYYY-MM-DD 插入数据和检索数据。
更多信息:https://www.sqlite.org/lang_datefunc.html
试试这个..
String date = "2014-04-22";
而不是
String date = "04-22-2014";
在 sqlite 中保存日期时,您需要按上述格式设置格式。
日期和时间数据类型
SQLite 没有预留存储空间 class 用于存储日期 and/or 次。相反,SQLite 的 built-in 日期和时间函数能够将日期和时间存储为 TEXT、REAL 或 INTEGER 值:
TEXT 作为 ISO8601 字符串 ("YYYY-MM-DD HH:MM:SS.SSS").
REAL 作为儒略日数,从 4714 年 11 月 24 日格林威治中午开始的天数 B.C。根据公历。
INTEGER 作为 Unix 时间,自 1970-01-01 00:00:00 UTC 以来的秒数。
应用程序可以选择以这些格式中的任何一种存储日期和时间,并使用 built-in 日期和时间函数在格式之间自由转换。
我正在开发一个教程项目并使用 SQLite 数据库。我正在尝试使用数据库中 DATE
列上的 WHERE
检索记录。但它什么也没检索到。我的代码有什么问题?
数据库助手class
中的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;
但它没有返回任何记录。
试试这个
String query = "SELECT * FROM "+TABLE_NAME + " where "+ COLUMN_DATE + " = "+ "'"+date+"'";
要从基于Date.You 的sqlite 数据库中获取数据需要使用标准日期格式,而基于date.The 标准日期格式是YYYY-MM-DD 插入数据和检索数据。 更多信息:https://www.sqlite.org/lang_datefunc.html
试试这个..
String date = "2014-04-22";
而不是
String date = "04-22-2014";
在 sqlite 中保存日期时,您需要按上述格式设置格式。
日期和时间数据类型
SQLite 没有预留存储空间 class 用于存储日期 and/or 次。相反,SQLite 的 built-in 日期和时间函数能够将日期和时间存储为 TEXT、REAL 或 INTEGER 值:
TEXT 作为 ISO8601 字符串 ("YYYY-MM-DD HH:MM:SS.SSS").
REAL 作为儒略日数,从 4714 年 11 月 24 日格林威治中午开始的天数 B.C。根据公历。
INTEGER 作为 Unix 时间,自 1970-01-01 00:00:00 UTC 以来的秒数。 应用程序可以选择以这些格式中的任何一种存储日期和时间,并使用 built-in 日期和时间函数在格式之间自由转换。