我的应用程序遇到了一个非常烦人的问题。让我们在名为“daily”的表中有一个 sqlite3 数据库和一个 datetime 列。
- (BOOL)eatQuantity:(NSNumber *)quantity date:(NSDate *)date
{
User *usr = [User loadCurrentUser];
BOOL ret;
sqlite3 *db;
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *strDate = [dateFormatter stringFromDate:date];
[dateFormatter release];
NSString *query = [NSString stringWithFormat:@"INSERT INTO daily (id_user, id_food, quantity, date) VALUES (%d, %d, %f, '%@')", usr.idPk.intValue, self.idPk.intValue, quantity.floatValue, strDate];
NSLog(@"Query: %@", query);
当我调用此方法从 UIDatePicker 传递 NSDate 对象时,一些用户正面临 NSDate 的奇怪行为,他们将其记录在控制台上:
查询:INSERT INTO daily (id_user, id_food, quantity, date) VALUES (1, 1010, 130.000000, '2011-12-21 01:20:09 m.')
但是 sqlite3 无法存储日期是一种类似以“m”结尾的格式。细绳。由于 WHERE 子句中的日期为空,用户无法查看任何记录。
所以那个“m”在哪里。来自?这是什么意思?我该如何解决这个问题?