在创建记录时,sqlite中是否有一种方法可以自动在表中保存时间戳,然后我可以在我的应用程序中获取并保存为NSDate?
或者我应该使用我的iphone应用程序中的当前时间创建NSdate对象,然后将其插入数据库.如果是这样?数据类型应该是什么列?一个DATETIME?
我所做的是使用sqlite的current_timestamp(看起来像这样:2009-06-16 12:11:24).要执行此操作,只需将qslite表的行类型设置为
Data type: "DATETIME" Allow null: NO Default value: CURRENT_TIMESTAMP
然后使用这样的SQL查询:
@"INSERT INTO 'scores' ('one', 'two', 'three') VALUES ('%d', '%d', '%d')"
忽略日期,以便它会自动获取当前时间值.
然后要将其转换为NSDate,您可以使用NSDateFormatter,如下所示:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; //this is the sqlite's format NSDate *date = [formatter dateFromString:score.datetime];
现在您将该日期作为NSDate对象.只是不要忘记发布我们分配的NSDateFormatter :)
没有TIMESTAMP
可以在SQLite中使用的数据类型,因此您必须在执行时手动插入时间INSERT
.我INTEGER
在数据库中使用数据类型,并将其转换NSDate
为:
sqlite3_bind_double(insert_statement, 1, [myDate timeIntervalSince1970]);
并将其从数据库中取出:
myDate = [NSDate dateWithTimeIntervalSince1970:sqlite3_column_double(select_statement, 1)];