DBAccess框架iOS NSDate无法查询

时间:2015-09-02 06:04:57

标签: ios sqlite dbaccess

我正在使用DBAccess框架和我的模型之一存储记录创建日期的日期,只需使用[NSDate date]并使用DBAccess框架存储到数据库。现在,当我尝试使用查询检索时,它失败了。我想只检索最近7天的记录,并编写了一个像

这样的查询
DBResultSet* result = [[[weightModel query] whereWithFormat:@"savedAt >= %@ AND savedAt <= %@", beforeDate, beforeDate] fetch];

beforeDate为NSDate的地方

 -(NSDate*)getDateFor:(int)daysBack {
        NSDate* date = [NSDate date];
        NSDateComponents* comps = [[NSDateComponents alloc]init];
        comps.day = -daysBack;
        NSCalendar* calendar = [NSCalendar currentCalendar];
        NSDate* beforeDate = [calendar dateByAddingComponents:comps toDate:date options:0];
        return beforeDate;
    }

任何人都知道如何在过去7天内获得NSDate个记录?

但是,我已使用

确认存在这些记录
weightModel* weightRecord = [[[weightModel query] fetch] objectAtIndex:i];
        [dates weightRecord.savedAt];

并打印出来。

1 个答案:

答案 0 :(得分:0)

最初我回答了你的问题,说你生产和查询日期的方式似乎没有问题。然而,一个小小的微妙之处逃过了我,那就是,你在查询日期&gt; =&amp;&amp; &lt; = 其中参数是相同的日期值。

鉴于NSDate对象的准确度大于1秒,这意味着您的记录必须在7天前以完全相同的毫秒(*引用要求,不确定实际准确性)存在。哪个不太可能返回任何结果。

您需要做的是创建一个日期函数,它返回一天的开始和一天的结束。

或者,您可以使用SQLite datetime函数为您执行此操作。但我建议将其保留在对象内。

由于 阿德里安