带时间戳的ContentResolver查询
问题描述:
如果当前日期和dealdate之间的差小于15分钟,我必须运行服务。带时间戳的ContentResolver查询
我有创建表DBHelper类:
public class ToDoDBHelper extends SQLiteOpenHelper {
private final int DATABASE_VERSION = 1;
private ArrayList<ToDoClass> todoitems;
private final String DATABASE_NAME = "deals.db";
public ToDoDBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
final String Create_Table_Query = "CREATE TABLE "+ ToDoDatabase.ToDoDatabaseEntry.TABLE_NAME+" ("+
ToDoDatabase.ToDoDatabaseEntry._ID+" INTEGER PRIMARY KEY AUTOINCREMENT, "+
ToDoDatabase.ToDoDatabaseEntry.start_dealDate_column+" TIMESTAMP ,"+
ToDoDatabase.ToDoDatabaseEntry.end_dealDate_column+" TIMESTAMP ,"+
ToDoDatabase.ToDoDatabaseEntry.shortdescription_column+" TEXT NOT NULL ,"+
ToDoDatabase.ToDoDatabaseEntry.fulldescription_column+" TEXT NOT NULL "+");";
sqLiteDatabase.execSQL(Create_Table_Query);
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
sqLiteDatabase.execSQL("DROP TABLE IF EXISTS "+ToDoDatabase.ToDoDatabaseEntry.TABLE_NAME);
onCreate(sqLiteDatabase);
}
}
和我有ContentResolver的查询在至极,我想使用的选择标准:
Cursor cursor = context.getContentResolver().query(
ToDoDatabase.ToDoDatabaseEntry.CONTENT_URI,
null,
selection,
null,
ToDoDatabase.ToDoDatabaseEntry.start_dealDate_column+" DESC");
但我不知道如何编写选择。在选择中,我需要区分ToDoDatabase.ToDoDatabaseEntry.start_dealDate_column和currentDate。
请帮
答
你可以试试这个
long FIFTEEN_MINUTES = 15*60*1000;
String dateFormatSQLite = "yyyy-MM-dd HH:mm:ss"; //verify timestamp format in your case
String timezone = "GMT+0.00"; //use your timestamp
SimpleDateFormat sdf = new SimpleDateFormat(dateFormatSQLite);
sdf.setTimeZone(TimeZone.getTimeZone(timezone));
String date = sdf.format(new Date(System.currentTimeMillis() - FIFTEEN_MINUTES));
如果你的情况的值存储在时代在SQLite数据库,那么你可以做到这一点
long FIFTEEN_MINUTES = 15*60*1000;
String date = System.currentTimeMillis() - FIFTEEN_MINUTES;
Cursor cursor = context.getContentResolver().query(
ToDoDatabase.ToDoDatabaseEntry.CONTENT_URI,
null,
ToDoDatabase.ToDoDatabaseEntry.start_dealDate_column+" <= ?",
new String[]{date},
ToDoDatabase.ToDoDatabaseEntry.start_dealDate_column+" DESC");
答
@Shriyansh高塔姆感谢您的回答。 我找到了我的问题的解决方案。现在我正在使用SQLiteDatabase类的查询方法。这是我的代码,它适用于我。
Date curDate = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(curDate);
calendar.set(Calendar.MINUTE, (calendar.get(Calendar.MINUTE)+15));
String selection = ToDoDatabase.ToDoDatabaseEntry.start_dealDate_column+" >= ?";
String [] selectionArgs = {String.valueOf(calendar.getTimeInMillis())};
String notifText = null;
ToDoDBHelper toDoDBHelper = new ToDoDBHelper(context,"deals", null, 1);
SQLiteDatabase sqLiteDatabase = toDoDBHelper.getWritableDatabase();
Cursor cursor = sqLiteDatabase.query("deals",
null,
selection,
selectionArgs,
null,
null,
ToDoDatabase.ToDoDatabaseEntry.start_dealDate_column+" ASC");
谢谢你的回答。 –
这对你有用@Renat Ahmetshin? –
也许我必须将日期转换为时间戳: String date =“1410293471300”; String [] selectionArgs = new String [] {date}; –