2012-04-08 3 views
0

날짜를 sqlite 데이터베이스 테이블에 문자열로 저장했습니다. 내가 필요한 것은 지난 7 일 동안 저장된 값을 가져와야합니다. 다음을 사용하여 시도했지만 값을 표시하지 않습니다.android에서 날짜를 사용하여 데이터베이스 (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(); 

그것은 도움이 될 것입니다 밖으로 정렬 너희들이 문제의 경우. 나는 여기에 붙어있다. 당신은 당신의 DB 설계를 변경할 필요가 없습니다

"select * from " + PAYMENTTABLE + " where " + REQUESTEDDATE + "DATE_SUB(CURDATE() ,INTERVAL 7 DAY) AND CURDATE()"; 
+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

일의 배열을 만들고 예를 들어에 사용할 수 있습니다. 테이블에서 *를 선택하십시오 ('4/8/2012', '4/9/2012', ...);은 효율적이지 않지만 문자열로 작동합니다. –

+0

귀하의 의견을 보내 주셔서 감사합니다 ... 그래, 난 밀리 ..로 내 DB를 변경할 수 있습니다 당신이 몇 가지 팁을 줄 경우 위대한 것입니다, 나는 안드로이드 프로그래밍에 새로운이기 때문에 ... 감사합니다 – GoCrazy

답변

1

시도 다음 쿼리는 지난 주에 대한 기록 (7 일)을 얻을 수 있습니다.

dateString에서 long 메소드로 변환 한 다음 DateUtil.java와 같은 클래스에 넣은 다음 날짜 유형을 사용하여 원하는 작업을 수행 할 때마다 호출하십시오.

방법은 다음과 같아야합니다 힘든 될 것하지만 어쩌면 누군가가 방법을 알고 있어요 "MM/DD/YYYY"

+0

귀하의 코멘트 주셔서 감사합니다. 그것을 시도했으나 04-09 07 : 59 : 15.314 : E/AndroidRuntime (314) : android.database.sqlite.SQLiteException : "7"근처 : 구문 오류 : 컴파일 중 : select * from paymentdetails where requesteddateDATE_SUB (CURDATE(), INTERVAL 7 DAY) 및 CURDATE() – GoCrazy

관련 문제