2017-03-17 10 views
0

ich eine Tabelle in SQLite mit Datumsspalte als Numeric TypVergleichen Datum in SQLite als Millisekunden gespeichert

KEY_DRIVER_STAT_DAT + " NUBMERIC" 

Jetzt I'mm Einfügen von Daten in KEY_DRIVER_STAT_DAT Spalten als

values.put(KEY_DRIVER_STAT_DAT, DateTime.now().getMillis()); 

Wie kann ich definiert haben Holen Sie sich die Datensätze aus dieser Tabelle, wo KEY_DRIVER_STAT_DAT zwischen Current date ist?

+0

Warum verwenden Sie nicht sqlite Zeitstempel oder Datumsfunktion, um das gleiche zu erreichen? – Geek

Antwort

0

Der Umgang mit Daten im Millisekundenbereich ist schwierig. Wenn Sie einen Datensatz mit einem Millisekundenwert als Datum einfügen, fügen Sie ihn mit dem Wert des aktuellen Moments ein. Sie müssen alle Datensätze durchsuchen, die sich im Zeitraum vom Beginn des Datums (Uhrzeit 00:00) bis zum Ende des Datums (Uhrzeit 23:59) befinden. Werfen Sie einen Blick auf dieses Beispiel:

/*Suppose your DateTime is Joda's DateTime class*/ 
import java.util.*; 
import org.joda.time.*; 

// Two functions to help retrive start and end of date 
public static DateTime getStart(DateTime date) { 
    return new DateTime(date.year().get(), date.monthOfYear().get(), date.dayOfMonth().get(), 0, 0);  
} 
public static DateTime getEnd(DateTime date) { 
    return new DateTime(date.year().get(), date.monthOfYear().get(), date.dayOfMonth().get(), 23, 59); 
} 

// Code to make clause and parameters for select-statement 

DateTime now = DateTime.now(); 
DateTime start = getStart(now); 
DateTime end = getEnd(now); 
String yourClause = "KEY_DRIVER_STAT_DAT >= ? AND KEY_DRIVER_STAT_DAT <= ?"; 
String[] params = new String[] {String.valueOf(start.getMillis()), String.valueOf(end.getMillis())}; 
System.out.println("clause: " + yourClause); 
System.out.println("parameters: " + Arrays.toString(params)); 
Verwandte Themen