2016-07-06 4 views
3

오늘 날짜와 만료 날짜 사이의 날짜 차이를 가져오고 싶습니다. 이것이 내가 구현 한 코드입니다. 그러나 이것은 올바른 출력을 반환하지 않습니다.sqlite의 날짜 차이 얻기

public String[] getDaysList(){ 
    Cursor cursor = db.query("COUPON", null, null, null, null, null, null); 
    if(cursor.getCount()<1){ 
     cursor.close(); 
     return null; 
    } 
    String[] array = new String[cursor.getCount()]; 
    int i=0; 
    while(cursor.moveToNext()){ 

     String days = "(julianday('now') - julianday(EXPIRED_DATE))"; 
     array[i] = days; 
     i++; 
    } 
    return array; 
} 

이것은 (julianday('now') - julianday(EXPIRED_DATE))을 반환합니다. 날짜 배열을 문자열 배열로 가져 오도록 도와주세요.

답변

0

안녕이 하나

Cursor cursor = db.rawQuery("SELECT julianday('now') - julianday(DateCreated) FROM COUPON", null); 

if (cursor.moveToFirst()) { 
       do { 
        array[i]=cursor.getString(0) 
       } while (cursor.moveToNext()); 

      } 
+0

일 수는 '18.4855'로 표시되지만 실제 일수는 '18'입니다. 소수 자릿수를 수정하는 방법. – tenten

1

now 수정 날짜뿐만 아니라 시간뿐만 아니라 반환 시도하십시오.

SELECT julianday(date('now')) - julianday(EXPIRED_DATE) FROM ... 

(. 만료 된 열이 또한 시간 값을 포함 할 경우, 당신도 그것을 위해 date()을 사용해야합니다)

:

date() function을 사용하는 날짜의 시작에 타임 스탬프를 변경하려면

public String[] getDaysList() { 
    String days = "julianday(date('now')) - julianday("+EXPIRED_DATE+")"; 
    Cursor cursor = db.query("COUPON", 
          new String[]{ days }, // query returns one column 
          null, null, null, null, null); 
    try { 
     String[] array = new String[cursor.getCount()]; 
     int i = 0; 
     while (cursor.moveToNext()) { 
      array[i++] = cursor.getString(0);  // read this column 
     } 
     return array.length > 0 ? array : null; 
    } finally { 
     cursor.close(); 
    } 
} 

(그리고 일 수 문자열이되지 않고 날기을 고려

는 실제로이를 실행하기 위해, 당신은 데이터베이스에 제공해야 g int[] 대신에)