Mac OS-X
安卓
带有 ADT 的 Eclipse
SQLite
我是创建 Android 应用程序的新手,我对此进行了大量研究,但我一无所获。我需要查询我的 SQLite 数据库以返回两个日期之间的所有行。到目前为止,我从研究中了解到,Androids SQLite 数据库中没有 DateTime 列,我必须将其保存为文本列。但我认为问题在于尝试比较字符串,但我无法找到解决方法。这是我的代码:
DB = currentContext.openOrCreateDatabase(DBName, 0, null);
DB.execSQL("CREATE TABLE IF NOT EXISTS " + tableName + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, Date VARCHAR(40), Hours INT(3));");
我没有收到任何错误,但我没有从我的 RawQuery 返回任何结果。这是我的代码:
Cursor c = newDB.rawQuery("select ID, Date, Hours from " + tableName + " where Date BETWEEN '" + date1 + " 00:00:00' AND '" + date2 + " 99:99:99'", null);
if (c != null ) {
Log.d(TAG, "date1: "+date1);
Log.d(TAG, "date2: "+date2);
if (c.moveToFirst()) {
do {
int id = c.getInt(c.getColumnIndex("ID"));
String date1 = c.getString(c.getColumnIndex("Date"));
int hours1 = c.getInt(c.getColumnIndex("Hours"));
results.add(+ id + " Date: " + date1 + " Hours: " + hours1);
}
while (c.moveToNext());
}
}
我也尝试了以下语句,但它们也没有产生结果:
Cursor c = newDB.rawQuery("select ID, Date, Hours from " + tableName + " where Date BETWEEN " + Date(date1) + " AND " + Date(date2) + "", null);
我从其他 StackOverflow 答案中得到了这个声明,但我找不到关于 date() 方法的任何文档。我不确定它现在是否已过时,但我收到错误消息“类型(类名)的日期(字符串)方法未定义”并且我尝试导入一些 JAVA 库。
有谁知道创建 rawData() 查询的正确方法,该查询将获取所选日期之间的行?
更多信息,这些是我的 INSERT 语句和进入数据库的日期格式:
newDB.execSQL("INSERT INTO " + tableName + " (Date, Hours) Values ('" + ph_date + "'," + hours + ");");
String date1 = "12/1/13"
String date2 = "25/1/13"