我是新的sqlite。我有一个有3列的表
1. Id
2. FoodName
3. Date and time
(ex: '1' 'Chicken' '2012-08-10 13:54')
我在某处读过Android sqlite不提供日期数据类型。
所以我使用文本数据类型在本地数据库中存储日期。它工作正常。
现在我想写一个查询来检索两个日期之间的记录。我试过了,但我没有得到它。
==>>代码
public class FoodDB {
//Database Related Constants
public static final String KEY_ROWID = "id";
public static final String KEY_NAME = "fooditem";
public static final String KEY_TIMESTAMP = "timestamp";
private static final String DATABASE_NAME = "AJFoodDB";
private static final String DATABASE_TABLE = "AJ_Food";
private static final int DATABASE_VERSION = 1;
Cursor c;
long id;
private static final String DATABASE_CREATE =
"create table "+DATABASE_TABLE+" (id integer primary key autoincrement, "
+ KEY_NAME+" text not null,"
+ KEY_TIMESTAMP+" text not null);";
private final Context context;
private DatabaseHelper DBHelper;
private SQLiteDatabase sqlitedatabase;
public FoodDB(Context ctext){
context = ctext;
}
private static class DatabaseHelper extends SQLiteOpenHelper
{
DatabaseHelper(Context context)
{
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public void onCreate(SQLiteDatabase db)
{
db.execSQL(DATABASE_CREATE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSQL("DROP TABLE IF EXISTS titles");
onCreate(db);
}
}
//Insert Row
public void insertSSFiltersDetails(String keyname, String timestamp){
try
{
DBHelper = new DatabaseHelper(context);
sqlitedatabase = DBHelper.getWritableDatabase();
insertRow(keyname, timestamp);
sqlitedatabase.close();
} catch (Exception e) {
System.out.println("Error from inserting data->"+e.toString());
}
}
public long insertRow(String keyname, String timestamp){
ContentValues initialValues = new ContentValues();
initialValues.put(KEY_NAME, keyname);
initialValues.put(KEY_TIMESTAMP, timestamp);
return sqlitedatabase.insert(DATABASE_TABLE, null, initialValues);
}
//Close Data Base
public void closeDBHelper(){
if(DBHelper != null){
DBHelper.close();
}
if (c != null) {
c.close();
c = null;
}
} }
查询和表格 从AJ_Food中选择*;
1|rice |8/12/2011 16:11
2|Rice |8/13/2012 11:42
3|chicken|8/13/2012 11:42
4|Prawans|8/13/2012 11:43
答案 0 :(得分:4)
即使你已经在sqlite中使用了日期文本。您可以编写以下查询以选择两个日期之间的数据。
select column from Table where columnDate between '2012-07-01' and '2012-07-07'
答案 1 :(得分:1)
您可以使用string
功能将date
转换为date( )
。
SELECT *
FROM AJ_Food
WHERE date(dateTimeColumn) BETWEEN date('startDateHere') AND date('endDateHere')
<强> See more Formats HERE 强>
答案 2 :(得分:0)
select col from Table where Date < '2011-08-02' and Date >'2012-08-13'
或其他
select col from Table where Date between '2011-08-02' and '2012-08-13'