2016-07-06 6 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

こんにちはnow修飾子戻り日付だけでなく、時間だけでなく、これらの1

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

を試してみてください。

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[]

関連する問題