0

我正在使用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;
    }

有人知道我怎样才能获得NSDate最近 7 天的记录吗?

但是,我已经确认这些记录存在使用

weightModel* weightRecord = [[[weightModel query] fetch] objectAtIndex:i];
        [dates weightRecord.savedAt];

并打印出来。

4

1 回答 1

0

最初我回答了你的问题,说你制作和查询日期的方式似乎没有问题。但是,我忽略了一个小细节,那就是您正在查询日期>= && <=其中参数是相同的日期值。

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

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

或者,您可以使用这些SQLite datetime功能为您执行此操作。但我建议将其保留在 obj-c 中。

谢谢阿德里安

于 2015-09-02T08:07:06.770 回答