2016-07-06 2 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 модификатор возвращает не только дату, но и время.

Чтобы изменить метку времени в начале дня, используйте date() function:

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

(. Если истекли столбец содержит значения времени, вы должны использовать date() для него тоже)

И на самом деле выполнить это, вы должны дать его в базу данных:

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(); 
    } 
} 

(и количество дней не строка, считают USIN g int[].)