2016-04-24 2 views
2

В моем приложении Я пытаюсь показать баланс текущего месяца, но я не могу этого сделать.Выберите данные из текущего месяца в android с помощью SQLite

Это мой код

// Count Current Month Income 
public float CurrentMonthIncome(){ 
    float x = 0; 
    SQLiteDatabase db = getReadableDatabase(); 
    String getamountdata = "SELECT SUM(inc_amount) AS totalInc FROM "+ TABLE_ENTRY + " where year(entry_date)= year(CURDATE()) and MONTH(entry_date)=MONTH(CURDATE())"; 
    Cursor c = db.rawQuery(getamountdata, null); 
    if(c.moveToFirst()){ 
     x = c.getFloat(0); 
    } 
    return x; 

} 

Когда я выполнить этот код, я получаю исключение, как

E/SQLiteLog: (1) no such function: CURDATE 
Shutting down VM 
FATAL EXCEPTION: main 
+6

Check [это] (http://stackoverflow.com/questions/1991697/mysql-date-and-time-functions -dont-exist). USE 'date()' вместо 'CURDATE() ИЛИ NOW()' – 1000111

+0

Всегда полезно иметь [документацию] (http://dev.mysql.com/doc/refman/5.7/en/date-and- time-functions.html), прикрепленный как закладка. – tadman

ответ

3

В соответствии с этим link использования date('now') вместо curdate().

Чтобы использовать текущую дату в MySQL и SQL Server, вы можете использовать CURDATE(), но в SQLite у вас нет этой опции. Чтобы получить текущую дату, вы должны использовать date('now') в своем запросе, чтобы получить текущую дату на этом конкретном устройстве.

Таким образом, ваш запрос будет выглядеть следующим образом:

SELECT SUM(inc_amount) AS totalInc 
FROM "+ TABLE_ENTRY + " WHERE strftime('%Y',entry_date) = strftime('%Y',date('now')) AND strftime('%m',entry_date) = strftime('%m',date('now')) 
+0

Вы можете объяснить немного больше –

+1

sure :) Чтобы использовать текущую дату на mysql и sql-сервере, вы можете использовать 'CURDATE()', но в sqlite у вас нет этой опции. Чтобы получить текущую дату, вы должны использовать 'date ('now')' в своем запросе, чтобы получить текущую дату на этом конкретном устройстве. –

+0

Я пытаюсь использовать этот запрос: где strftime ('% m', entry_date) = дата ('now'), но не успех. –

1

Вы используете SQLite не MySql так в SQLite функция, чтобы получить текущая дата

date('now') 

или

datetime('now', 'localtime') 

CURDATE() - это функция MySQL. То же самое для функции Month и Year, которая не существует в SQLite. Для того, чтобы получить лет и месяц вы должны использовать:

strftime('%m', myDate)//to get Month 

и

strftime('%Y', myDate)// to get Year 
Смежные вопросы