我懷疑NSDate是否可以直接存儲或使用FMDatabase從數據庫讀取或不讀取。通過FMDatabase讀取和寫入NSDate到sqlite數據庫
根據我的研究,FMDatabase從記錄中讀取日期,預計該元組爲雙值。 FMDatabase是雙值轉換爲日期此方法:
- (NSDate*) dateForColumn:(NSString*)columnName; {
int columnIdx = [self columnIndexForName:columnName];
if (columnIdx == -1) {
return nil;
}
return [NSDate dateWithTimeIntervalSince1970:[self doubleForColumn:columnName]];
}
這種方法的主要問題是,這將是困難的誰是手工在數據庫中輸入數據的人,以便它在可以理解的FMDatabase代碼。所以有人不能簡單地在GUI中以double值輸入日期。一種方法是使用these functions
date(timestring, modifier, modifier, ...)
time(timestring, modifier, modifier, ...)
datetime(timestring, modifier, modifier, ...)
julianday(timestring, modifier, modifier, ...)
strftime(format, timestring, modifier, modifier, ...)
之一,但這裏的開銷又是每次運行一個查詢使用類似這樣的插入操作進入了一個紀錄:
Compute the current date.
SELECT date('now');
Compute the last day of the current month.
SELECT date('now','start of month','+1 month','-1 day');
我想日期被存儲在數據庫中following format:
TEXT as ISO8601 strings ("YYYY-MM-DD")
並將其存儲爲日期格式的數據庫,以便我可以:
- 在查詢中利用日期比較工具。
- 使FMDatabase可以讀取和寫入這種日期格式。
FMDatabase是否有任何直接的方式可以與這種日期格式進行交互?或者這是FMDatabase的限制,我將不得不擴展FMDatabase類來處理NSDate讀取和寫回到sqlite日期格式?
感謝
編輯:一個FMDatabase的作者/主持人不得不說this一下:從數據庫,在格式YYYY-MM-DD進入http://code.google.com/p/flycode/issues/detail?id=16#c1