2011-03-18 64 views
3

我試圖在我在Android設備上創建的數據庫中存儲3個值。值爲NAME,DATE和TIME。因此,我的問題是:將當前DATE和TIME值插入到數據庫中時,如何獲取並存儲當前DATE和TIME值的最佳方法是什麼?在Android上的SQL數據庫中存儲日期和時間

到目前爲止,我已經確定了兩種方法來做到這一點,或者通過在Android中進行系統調用,如//values.put(TIME, System.currentTimeMillis());或使用SQL函數,如GETDATE()。但是,哪個更好?

如果我在錯誤的方向前進了,請讓我知道,我直接朝着正確的方向。

回答

2

使用SQL函數將使用相同的SQL引擎等工具更兼容。

ISO格式YYYY-MM-DD hh:mm:ss.fff使用文本將廣泛兼容,仍然正確排序。

+0

我同意使用ISO格式,特別是對容易排序 – Squonk 2011-03-18 16:45:45

2

sqlite docs給用於存儲日期這些列類型選項:

  • TEXT如ISO8601字符串( 「YYYY-MM-DD HH:MM:SS.SSS」)。
  • 真實的Julian日數,自中午4714年11月24日格林威治中午以來的天數。根據預測的公曆。
  • INTEGER as Unix Time,自1970-01-01 00:00:00 UTC以來的秒數。

您可以使用Doug Currie所述的TEXT,或者您可以使用INTEGER使用java.util.Date。 (我不知道爲什麼你會使用真實的選項。)

要使用INTEGER,您可以加載和存儲日期是這樣的:

// build a date from a Cursor 
Date d = new Date(cursor.getLong(DATE_FIELD_INDEX)); 

// add a date to an SQLiteDatabase 
final ContentValues values = new ContentValues(); 
values.put(DATE_FIELD, d.getTime()); 
db.insert(TABLE_NAME, null, values); 

這將是你的數據庫的可讀性,但日期之間的比較(在您的查詢中)應該更快,因爲比較數字比字符串更快。 (雖然我不知道很多關於sqlite的執行情況。)

相關問題