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

标签 android sqlite android-sqlite

我正在开发一个教程项目并使用 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/

相关文章:

python - 将 CSV 文件写入 PDF 文档

iphone - 我有一张需要优化的庞大 table 。我想我需要使用索引,但我希望获得有关它们的更多信息

android - 在 SQLite 数据库中使用 bool 值

android - 在 RecyclerView 上突出显示所选项目

java - 在 Android Studio 上移动鼠标指针

android - 什么正则表达式用于从 wpa_supplicant.conf 获取网络对象?

android - 如何在 Android 中更改 Google Map api v2 折线

java - 使用 StringBuilder java 在消息中显示可点击的 URL

r - dbPool 对象过期

java - 如何从 java 类更新 MainAcitivity 的 Searchview 和 textView 的值