2008-10-30 101 views
15

我正在開發一個將數據保存到SQLite3數據庫的iPhone應用程序。在iPhone應用程序中將日期保存到SQLite3

對於每一行我堅持我想包括「創建日期」和「最後修改日期」

我的問題是什麼是存儲在表此信息推薦的方法嗎?

屬性在我的應用程序中表示爲NSDate,但我不確定如何在表格中表示這些信息。

看來,SQLite3提供了一種DATETIME類型,但對如何解析這些信息沒有本質的理解。

任何幫助將不勝感激。

在此先感謝。

回答

20

我通常使用雙,是這樣的:

sqlite3_bind_double(statement, index, [dateObject timeIntervalSince1970]); 

其中dateObject是一個NSDate *。然後,走出DB的數據的情況下,使用

[NSDate dateWithTimeIntervalSince1970:doubleValueFromDatabase]; 
+0

我試圖用FMDatabase訪問,但我使用的是圖形用戶界面,每一次我沒有得到任何記錄進入記錄。請檢查我的問題,並建議:http://stackoverflow.com/questions/8772601/date-entry-into-database-through-gui-for-date-which-is-readable-by-fmdatabase – 2012-01-07 20:00:42

2

According to the docs沒有DATETIME數據類型!我使用實數數據類型並使用timeIntervalSinceReferenceDate方法將NSDate轉換爲實數

8

商店作爲典型的C-時間在UNSIGNED INT列(例如由時間返回的time_t的/ int值())的值。轉換像drewh用的NSDate說:

- timeIntervalSince1970 
- dateWithTimeIntervalSince1970:(double)value 

除了存儲爲一個整數,除非需要子第二粒度(其大體爲創建的通/最後一次修改,是矯枉過正)。未簽名的整數比雙精度要小很多,處理起來也比較容易。雖然這在大多數桌面和Web應用程序中可能已經不再重要,但它對iPhone確實有幫助。每一點幫助。

大多數人沒有意識到的C時代的一個好處是它們是時區不可知的。如果你需要支持多個時區,這個派上用場。

相關問題