Ваша проблема заключается в том, что вы не заключили строку в одинарные кавычки, и поэтому она интерпретируется так, как если бы она была числовой и, следовательно, расчетной.
Это результирующий SQL (при условии, что дата 2018-11-26, что математически равно 2018 минус 11 минус 26 = 1981) будет: -
SELECT * FROM your_table WHERE 1981 BETWEEN STARTING_DATE AND ENDING_DATE
Вы можете изменить String todayString = e.format(today);
на String todayString = "'" + e.format(today) + "'";
Или вы можете использовать: -
String stext = "SELECT * FROM " + MED_TABLE_NAME + " WHERE ? BETWEEN STARTING_DATE AND ENDING_DATE";
Cursor cursor = db.rawQuery(stext, new String[]{date}); //<<<<<<<<<< will place quotes around the string for you
Или вы можете использовать: -
public int getMedicineDataFromDate(String date) {
SQLiteDatabase db = this.getReadableDatabase();
String whereclause = "? BETWEEN STARTING_DATE AND ENDING_DATE";
String[] whereargs = new String[]{date};
Cursor cursor = db.query(MED_TABLE_NAME,null,whereclause,whereargs,null,null,null);
int rv = cursor.getCount();
cusror.close();
return rv;
}
Обратите внимание, что во всех случаях вы должны закрывать курсор, как показано в последнем варианте,перед возвратом, в противном случае Курсор остается открытым, и у вас есть вероятность исключения из-за слишком большого числа открытых.
Вышеприведенный код является принципиальным и не был проверенили запустить и, следовательно, могут иметь некоторые ошибки.