Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 带有时间戳的ContentResolver查询_Android_Android Sqlite_Android Contentresolver - Fatal编程技术网

Android 带有时间戳的ContentResolver查询

Android 带有时间戳的ContentResolver查询,android,android-sqlite,android-contentresolver,Android,Android Sqlite,Android Contentresolver,如果当前日期和dealdate之间的差异小于15分钟,则必须运行该服务 我有一个DBHelper类,用于创建表: public class ToDoDBHelper extends SQLiteOpenHelper { private final int DATABASE_VERSION = 1; private ArrayList<ToDoClass> todoitems; private final String DATABASE_NAME = "deals.db"; pu

如果当前日期和dealdate之间的差异小于15分钟,则必须运行该服务

我有一个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);

}
但我不知道如何写选择。在所选内容中,我需要获得ToDoDatabase.ToDoDatabaseEntry.start\u dealDate\u列和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");
长十五分钟=15*60*1000;
字符串日期=System.currentTimeMillis()-十五分钟;
Cursor Cursor=context.getContentResolver().query(
ToDoDatabase.ToDoDatabaseEntry.CONTENT\u URI,
无效的

ToDoDatabase.ToDoDatabaseEntry.start_dealDate_column+“@shryans Gautam感谢您的回答。 我找到了问题的解决方案。现在我正在使用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");

也许我必须将日期转换为时间戳:String date=“1410293471300”;String[]selectionArgs=new String[]{date};我已经在我的答案new String[]{date}中给你了这很奇怪。如果我检查ToDoDatabase.ToDoDatabaseEntry.start\u dealDate\列的值,返回的值像1410293471300,与timestampformat中的值不一样。所以我必须这样:Date curDate=New Date();String Date=String.valueof(curDate.getTime());Cursor Cursor=context.getContentResolver().query(ToDoDatabase.ToDoDatabaseEntry.CONTENT_URI,null,ToDoDatabase.ToDoDatabaseEntry.start_dealDate_column+)这在@Renat Ahmetshin有效吗?请参阅更新的答案
   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");