0

ich ein Datum aus dem Server in „MM/TT/yyy“ Form zu bekommen, dann wandle ich es in Millisekunden mit der folgenden Funktion:Android SQlite: Abfrage von Tabellenzeilen nach Datumsbereich von heute nach hinten?

public static long getSimpleDateToMillis(String simpleDate) throws ParseException { 
     SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy"); 
     Date date = formatter.parse(simpleDate); 
     return date.getTime(); 
} 

Dann danach ich das Ergebnis in die Datenbank als int speichern.

Im Moment stecke ich in etwas, das wie eine Sackgasse für mich scheint. Ich finde keinen Weg durch die Suche und von meinem Lagerwissen, wie ich meinen Cursorloader nach der project_date-Spalte filtern könnte, die als Integer in der Datenbank gespeichert ist.

In welcher Weise wäre ich in der Lage, so abzufragen, dass es würde: Wählen Sie alle Zeile aus der Projekttabelle, wo das Projektdatum heute und rückwärts ist (gestern und so weiter).

Ich habe dieses versucht, aber scheint wirklich nicht die Antwort zu sein.

Ich habe keine andere Referenz gefunden, die mich darauf hinweisen würde, also hoffe ich, dass jemand vielleicht auch dies angetroffen haben könnte.

+0

"datetime (" + ProjectsEntry.COLUMN_PROJECT_DATE + "/ 1000, 'unixepoch')' '<' '=? - haben Sie versucht" weniger als gleich "?? – Grisgram

+0

@Grisgram wird nicht funktionieren. –

Antwort

0

So mache ich etwas ganz ähnliches, aber benutze den vollen timesteamp, also lang statt int.

Zuerst habe ich diese Methode, um die Timestamp zu bekommen, das heutige Datum/Zeit ab Mitternacht (bar 1 Millisekunde) zu erhalten: -

/** 
* 
* @return 1 millsecond before midnight today 
*/ 
private long getDateTimeOfAllofToday() { 
    Calendar cal = Calendar.getInstance(); 
    cal.add(Calendar.DAY_OF_MONTH,1); // tomorrow 
    cal.set(Calendar.MILLISECOND,0); 
    cal.set(Calendar.SECOND,0); 
    cal.set(Calendar.MINUTE,0); 
    cal.set(Calendar.HOUR_OF_DAY,0); 
    cal.add(Calendar.MILLISECOND,-1); 
    return cal.getTimeInMillis(); 
} 

Dann erstelle ich die entsprechende Klausel where z.B. : -

filter = DBRulesTableConstants.RULES_ACTON_COL + 
     " <= " + 
     Long.toString(getDateTimeOfAllofToday()); 

Dies wird über eine rawQuery so nicht genau verwendet, was Sie wollen, aber einfach genug, um " <= "-" <=?" zu ändern und dann String [] selectionArgs = new String[]{Long.toString(getDateTimeOfAllofToday())}; oder eine modifizierte Version integer erhalten verwenden.

Verwandte Themen