2017-07-22 9 views
-2

ASCを適用するようにクエリを変更したいと思います。これは、日付形式を変更し、DESCモードで正しく並べ替えるクエリです。日付形式のsqliteでのクエリのキャスト(int型)

public Cursor get(String Filter1, String Order1) 
{ 
String Sort="data"; 
if (Order1=="data") 
{ 
    Sort="substr(data, 7, 4), substr(data, 4, 2), substr(data, 1, 2)"; 
} 
else {Sort="players";} 

try 

{ 
    String sql3 ="SELECT rowid _id, * FROM players" 
     + " WHERE players like ('"+ Filter1 +"')" 
     //+ " ORDER BY "+ Sort +""; 
     + " ORDER BY "+ Sort +""; 

    Cursor mCur = mDb.rawQuery(sql3, null); 
    if (mCur!=null) 
    { 
     mCur.moveToNext(); 
    } 
    return mCur; 
} 
catch (SQLException mSQLException) 
{ 
    Log.e(TAG, "getGiocatoriTutti >>"+ mSQLException.toString()); 
    throw mSQLException; 
} 

終わりASCまたはDESCを追加することは著作ません。

ORDER BY "+ Sort +" ASC"; 

変更するには:

Sort="cast (substr(date,7,4) as int) ASC" 

のみ正しく年によってソートします。

私は

Sort="cast (substr(date,7,4), substr(date 4,2), substr(date 1,2) as int) ASC" 

を試してみたが、右sintaxではありません。

+0

日ASC' BY '使用中... ORDER間違っているのですか?なぜそれをINTEGERにキャストしたいのですか?正しいフォーマット(YYYY-MM-DD)を使用している場合、TimeStringはそのままソート可能です –

+0

データベースには、日付がdd/mm/yyyy形式で保存されています。そして、私はsubstrを使ってyyyymmdd形式に変更しようとしていました....しかし、ASCまたはDESCを加えても効果はありません – lucignolo

+0

'データベース内の日付がdd/mm/yyyy形式で保存されています。 **、then。See https://sqlite.org/lang_datefunc.html –

答えて

0

は、ここに私の解決策を解決:

Sort="substr(data,7,4)||substr(data,4,2)||substr(data,1,2) DESC"; 
+0

あなたは、いくつかのチューインガムとタイヤ、ハァッ、 –

+0

私は、アンチパターンを使用して、勝つ意味あなたのアプリをよりスマートにする。 –

関連する問題