• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - NSDate 和 SQLite3

[复制链接]
菜鸟教程小白 发表于 2022-12-13 12:59:46 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我的应用遇到了一个非常烦人的问题。 让我们在名为“daily”的表中有一个 sqlite3 数据库和一个 datetime 列。

- (BOOL)eatQuantityNSNumber *)quantity dateNSDate *)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”在哪里。来自?这是什么意思?我该如何解决这个问题?



Best Answer-推荐答案


不要使用 NSDateFormatter 它会大大降低您的应用程序的速度。

您应该使用 unix 时间戳 (1970)。 像这样 sqlite3_bind_double(statement, index, [dateObject timeIntervalSince1970]);

检索:

[NSDate dateWithTimeIntervalSince1970:doubleValueFromDatabase];

关于ios - NSDate 和 SQLite3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10055540/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap