Mac OS-X
アンドロイド
ADT を使用した Eclipse
SQLite
私は Android アプリを作成するのが初めてで、これを徹底的に調査しましたが、どこにも行きません。SQLite データベースにクエリを実行して、2 つの日付の間のすべての行を返す必要があります。これまでの調査から学んだことは、Android の 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() メソッドに関するドキュメントが見つかりません。現在廃止されているかどうかはわかりませんが、「Date(String) method is undefined for the type (classname)」というエラーが表示され、いくつかの Java ライブラリをインポートしようとしました。
選択した日付間の行を取得する rawData() クエリを作成する正しい方法を知っている人はいますか??
詳細情報、これらは私のINSERTステートメントとデータベースに入る日付形式です:
newDB.execSQL("INSERT INTO " + tableName + " (Date, Hours) Values ('" + ph_date + "'," + hours + ");");
String date1 = "12/1/13"
String date2 = "25/1/13"