2012-08-04 3 views
0

내 응용 프로그램에서 일부 dates.In 데이터베이스 사이에 거짓말을 데이터베이스에서 날짜를 검색 할 문자열로 날짜를 저장하고 있습니다. 나는 또한 쿼리를 썼습니다.날짜 사이의 비교

id item price startdate enddate 
1  ass 78 04/08/2012 14/09/2012 
2  err 89 04/08/2012 10/09/2012. 
3  dffg 44 04/08/2012 18/08/2012 

내 쿼리는 다음과 같습니다 : 내가 enddate>date을 확인하고 위의 상태에서

public Cursor getIncometitle(String grpsdb,String date) throws SQLException 
{ 
    Cursor mCursor = db.rawQuery(
      "SELECT * FROM incomexpense WHERE date like '"+date+"' OR enddate > date AND category='Income' AND groups='"+grpsdb +"' ORDER BY date DESC" , null); 
if (mCursor != null) { 
mCursor.moveToFirst(); 
} 
return mCursor; 
} 

이 내 샘플 테이블입니다. 이게 다가올 것입니다, 나는 그것의 날짜가 (04 and 14) and(04and 10)을 비교한다고 생각합니다, 그것은 모든 데이터가오고 있기 때문에 더 큽니다. 그러나 enddate month is greater that startdate이 나는 ​​데이터를 가져야한다는 것을 의미합니다. 미리 감사드립니다.

+0

조금 더 설명해 주시겠습니까? 나는 어떤 질문인지 이해할 수 없습니까? 당신은 SQL 만 달을 비교하기를 원합니 까? – luanjot

+0

luanjoit .. 나는 나의 시나리오를 분명하게 설명 할 것이다. 위의 테이블 시작일과 종료일은 거기에있다. 끝 날짜 중 일부는 다음 달에 있으며 이번 달에는 일부가있다. 다음 달에 데이터를 표시하려면 끝 날짜가 다음 날짜에있는 항목을 표시해야 함을 의미합니다. 끝 날짜가 현재 날짜보다 gretaer 인 경우 조건을 검사했습니다. 데이터를 검색해야합니다. 내 질문에 comparng 날짜이며 모두에게 제공합니다. 항목이 끝나기 때문에 (14,18,10) 모두오고 있습니다. 그러나 내 쿼리가 반환되어야합니다 (다음 달에 데이터가 있음) (예 : 항목 1과 2가 있어야합니다). –

+0

이 것을 sqlite http://sqlite.awardspace.info/syntax/sqlitepg08.htm에서 확인할 수 있습니다. –

답변

0

SQL 인젝션 공격 취약점 (SQL에 값을 직접 삽입하는 대신 매개 변수화 된 쿼리 사용)을 제외하고 정렬 가능한 형식으로 날짜를 저장해야합니다. yyyy-MM-dd. 이 시점에서 사전 편집 순서는 올바른 연대순 정렬을 제공하므로 비교가 가능합니다.

당신이 당신의 날짜 날짜 데이터베이스에로 를 저장할 수 있다면 당신은 , 그것은 실제로 더 나을 수 있다면 - 그것은 당신의 데이터베이스가 지원 여부에 따라 달라집니다.