无法使用Android中SQLite的DATE列上的WHERE检索数据库记录

时间:2016-01-27 06:42:59

标签: android sqlite android-sqlite

我正在开发一个教程项目并使用SQLite数据库。我正在尝试使用数据库中WHERE列上的DATE检索记录。但它什么都没检索。我的代码出了什么问题?

数据库帮助程序类

中的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;

但它没有返回任何记录。

2 个答案:

答案 0 :(得分:1)

根据Date从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字符串(&#34; YYYY-MM-DD HH:MM:SS.SSS&#34;)。

REAL 作为朱利安日数字,即公元前4714年11月24日格林威治中午以来的天数。根据公历格里高利历。

INTEGER as Unix Time,自1970-01-01 00:00:00 UTC以来的秒数。 应用程序可以选择以任何这些格式存储日期和时间,并使用内置的日期和时间函数在格式之间自由转换。

答案 1 :(得分:0)

试试这个

String query = "SELECT * FROM "+TABLE_NAME + " where "+ COLUMN_DATE + " = "+ "'"+date+"'";