2008-10-30 75 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时代的一个好处是它们是时区不可知的。如果你需要支持多个时区,这个派上用场。

相关问题