2012-03-30 1 views
0

사용자가 SQLite 데이터베이스에 세부 정보를 입력하는 응용 프로그램을 작성하고 있습니다. 데이터베이스에 저장된 데이터의 마지막 31 일을 출력하는 코드를 작성해야합니다.날짜 형식을 사용하여 SQL 데이터베이스에서 특정 행 출력

날짜 문자열을 저장하는 코드는 다음과 같습니다. currentDateString = DateFormat.getDateInstance(). format (new Date());

이 30 3 월 2012

DD/MM/YYYY로이 데이터 형식을 변경 어쨌든 거기로 (오늘 날짜) 형식으로 날짜를 준다?

ContentValues ​​dbcv = 새로운 ContentValues를(); 다음과 같이 (30/03/2012)

이 문자열은 SQL 데이터베이스에 저장됩니다 dbcv.put (KEY_DATE, date);

(currentDateTime 문자열 이전 클래스 = 일)

I 출력에 마지막 삼십일일 내에서 제공되는 데이터베이스의 모든 행을 기원합니다.

어떻게하면됩니까?

감사합니다.

+1

문자열 대신 유닉스 시간을 사용하는 것과 같은 시간 정보 저장에 더 좋은 대안이 있습니다. http://sqlite.org/datatype3.html –

+0

왜 날짜를 문자열로 저장 하시겠습니까? – njzk2

+0

@ njzk2 왜냐하면 나는 글자 그대로 일식과 안드로이드에만 완전히 새로운 것이 아니기 때문에 자바 자체가 델파이와 파스칼을 기반으로하고 있기 때문이다. –

답변

1

먼저 두 가지 질문을하고 있습니다. 단 하나만 선택하면 두 가지 질문에 모두 답변을 드리겠습니다.

  1. SimpleDateFormat에 대한 설명서를 살펴 자바에서 날짜 형식을 변경하려면, 당신은 날짜 당신이 정말로 원하는 방식으로 포맷하기 위해 해당 클래스의 생성자에 패턴을 전달할 수 있습니다. 특정 경우에 찾고있는 패턴은 dd/MM/yyyy
  2. 입니다. 데이터베이스에 날짜를 문자열로 저장하면 날짜를 저장하는 데 따른 이점이 손실됩니다. 예를 들어, 테이블에 문자열 대신 날짜를 저장하는 경우 두 번째 질문을 쉽게 수행 할 수 있습니다. 원하는 것은 SQLLite에서 제공하는 날짜 함수를 사용하여 테이블에 select 연산을 수행하는 것입니다. SQLLite Date Functions

: 물론 당신은 여전히 ​​그들을 저장할 경우 유일한 솔루션을 문자열로, 그것은 당신에게 당신이 그 기능을 수행 할 수있는 작업의 아이디어를 줄 것이다으로 살펴에게이 웹 페이지를 가지고 have have all records, 모든 문자열을 날짜로 구문 분석하고 java.util.Calendar 클래스를 사용하여 31 일보다 오래된 레코드와 그렇지 않은 레코드를 확인합니다. 필자는 SQL 쿼리를 대신 수행하는 것이 좋습니다 (특히 모바일 장치에서).

편집 :

SQLLite와 안드로이드 특별히 내 강점 아니다, 나는 작은 연구를하고 난 당신이 처음에 어떻게 시작으로 사람들이 실제로 문자열로 저장 된 여러 게시물을 발견했다. 안드로이드의 SQLLite가 날짜 저장을 지원하지 않는다면 (다른 데이터베이스처럼) 아마도 시나리오에서 가장 좋은 옵션은 long 값을 날짜로 사용하는 것입니다. Date 정의 클래스를 살펴보면 날짜 값을 긴 값으로 반환하는 getTime 메서드가 있습니다. 나중에 해당 값을 사용하여 해당 생성자를 사용하여 날짜의 새 인스턴스를 만들 수 있습니다.

해당 날짜 (물론 Date 개체)를 사용자가 읽을 수있는 형식으로 서식을 지정하려면 DateFormat (또는 해당 구현 중 하나)이 여전히 답을해야합니다.

날짜를 long으로 저장하려는 쿼리를 수행하려면 Apache Commons Lang library에서 DateUtils 클래스를 살펴 보시기 바랍니다. 이 도움이

Date now = new Date(); 
Date before = DateUtils.addDays(now, -31); 
long beforeAsLong = before.getTime(); 
String query = "select * from TABLE_NAME where DATE_FIELD >= " + beforeAsLong; 

희망 : 클래스에서 당신은 당신이 지난 31 일자에 행을 가져 오기 위해 필요로하는 쿼리를 작성하기 전에, 당신은 같은 것을 사용할 수 날짜에 작업을 몇 가지 기능을 찾을 수 있도록합니다.

+0

SQLite 함수를 살펴보면 어떻게 SQL 데이터베이스와 호환되는 날짜로 저장할 수 있습니까? –

+0

또한 문자열로 읽는 측면에서 불행히도 저는 언어에 완전히 익숙하지 않기 때문에 실제 날짜 형식으로 저장하면 저에게 뛰어남을 느낄 수 있습니다! –

+0

의견으로 많은 정보를 추가 할 수 없어서 내 대답을 편집했습니다. 그것을보고 도움이되기를 바랍니다. –

관련 문제