SQLite

2016-04-24 5 views
2

でアンドロイドの今月のデータを選択私のアプリケーションでは、今月の残高を表示しようとしていますが、それを達成できません。SQLite

は、これは私がそのコードを実行すると、私はこのlink 代わりに使用curdate()date('now')によると

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

チェック[この](http://stackoverflow.com/questions/1991697/mysql-date-and-time-functions - 存在しない)out。 'CURDATE()OR NOW()'の代わりに 'date()'を使用してください。 – 1000111

+0

これは、[documentation](http://dev.mysql.com/doc/refman/5.7/en/date-and- time-functions.html)はブックマークとして固定されています。 – tadman

答えて

3

のような例外を取得私のコード

// 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; 

} 

です。

MySQLとSQL Serverの現在の日付を取得するには、CURDATE()を使用できますが、SQLiteではこのオプションはありません。現在の日付を取得するには、照会にdate('now')を使用して、その特定のデバイスの現在の日付を取得する必要があります。

だからあなたのクエリは次のようになります:あなたはSQLiteのを使用している

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

mysqlとsqlサーバで現在の日付を取るには 'CURDATE()'を使うことができますが、sqliteではこのオプションはありません。 現在の日付を取得するには、クエリーで 'date( 'now')'を使用して、その特定のデバイスの現在の日付を取得する必要があります。 –

+0

私はこのクエリを使用しようとしています:strftime( '%m'、entry_date)=日付( 'now') –

1

現在の日付が

date('now') 

または

datetime('now', 'localtime') 
で取得することではないのmySQL機能SQLiteの中ので

CURDATE()はMySQLの機能です。 SQLiteには存在しない月と年の関数でも同じです。あなたが使用する必要が年と月を取得するには:

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

strftime('%Y', myDate)// to get Year