2016-07-06 98 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(); 
    } 
} 

(和天数是不是一个字符串;考虑全光照改为int[]