2017-03-17 78 views
0

我在KEY_DRIVER_STAT_DAT列定義爲Numeric類型比較日期存儲爲毫秒

KEY_DRIVER_STAT_DAT + " NUBMERIC" 

現在I'mm插入數據作爲

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

在具有日期列的SQLite表我怎樣才能從該表中獲得記錄KEY_DRIVER_STAT_DAT介於 Current date

+0

爲什麼不使用sqlite時間戳或日期函數來實現同樣的事情? – Geek

回答

0

處理日期的毫秒值是棘手的。以毫秒值插入記錄作爲日期時,用當前時刻的值插入它。您需要搜索從開始日期(時間00:00)到日期結束(時間23:59)之間的所有記錄。看看這個例子:

/*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));