2012-04-08 8 views
0

sqliteデータベーステーブルに日付を文字列として保存しました。何が必要なのですか私は過去7日間に保存された値を取得する必要があります。私は次のように使ってみましたが、値は表示されません。アンドロイドの日付を使用してデータベース(Sqlite)から値を取得する方法は?

私のデータベース機能

 public Cursor paymentWeek(Activity activity) 
    { 

     String[] from = { _PAYMENTID, NAME, REQUESTEDDATE, FROMAD, TOADD, EMAILBODYPAYMENT, AMOUNT}; 

     SQLiteDatabase db = getReadableDatabase(); 

     String orderby = REQUESTEDDATE+" DESC"; 

     Cursor cursor = db.rawQuery("select * from " + PAYMENTTABLE + " where " + REQUESTEDDATE + " BETWEEN " 
     + "date('now')" + " AND " + "date('now','-7 days')", null); 

     activity.startManagingCursor(cursor); 

     return cursor; 
    } 

Calling function 

    Cursor week = db.paymentWeek(this); 
       String[] weekly = new String[] { PaymentAppDataBase.REQUESTEDDATE,PaymentAppDataBase.PAYMENTNAME,PaymentAppDataBase.AMOUNT }; 
       int[] sevendays = new int[] { R.id.Date,R.id.Name,R.id.Amount }; 

       SimpleCursorAdapter weekcursor = 
        new SimpleCursorAdapter(this, R.layout.listview, week, weekly, sevendays); 
       setListAdapter(weekcursor); 
       db.close(); 

あなたたちはこの問題を整理場合は参考になります。私はここで立ち往生する。先週のレコード(7日)を取得するためのクエリ後

+1

:yourDateFormatは次のようになります

public static long convertStringDateToLong(String date, String yourDateFormat) { Long time = 0L; try { SimpleDateFormat df = new SimpleDateFormat(yourDateFormat); Date d = null; try { d = df.parse(date); } catch (ParseException e) { e.printStackTrace(); } time = d.getTime(); } catch (Exception e) { e.printStackTrace(); } return time; } 

。データベースの設計を変更することは可能ですか?ミリ秒(文字列ではない)としてデータベースに日付を格納すると、あなたの人生が楽になります。 – Roger

+0

あなたは日数の配列を作成し、例えばforのように使用できます。 select * from table( '4/8/2012'、 '4/9/2012'、...);は効率的ではありませんが、文字列で動作します。 –

+0

あなたのコメントありがとう...ああ、私はミリ秒として私のデータベースを変更することができます..あなたがアンドロイドプログラミングに新しいので、あなたがそれを行う方法をいくつかのヒントを与えるなら、それは素晴らしいだろう...ありがとう – GoCrazy

答えて

1

試してみてください。

"select * from " + PAYMENTTABLE + " where " + REQUESTEDDATE + "DATE_SUB(CURDATE() ,INTERVAL 7 DAY) AND CURDATE()"; 
+0

あなたのコメントありがとう..私それを試してみましたが、04-09 07:59:15.314:E/AndroidRuntime(314):android.database.sqlite.SQLiteException:near "7":コンパイル中に:select * from paymentdetails where requesteddateDATE_SUB(CURDATE ()、INTERVAL 7 DAY)とCURDATE() – GoCrazy

0

あなたのDBの設計を変更する必要はありません。

dateStringからlongメソッドへの変換を独自に作成し、DateUtil.javaのようなクラスに入れて、日付型で何かをしたいときはいつでも呼び出すことができます。

方法は次のようになります。タフになるだろうが、おそらく誰かが道を知っています「MM/DD/YYYY」

関連する問題