我需要一些帮助来从SQLite获取过去7天的天数。
如果有记录,我目前可以从SQLite获取日期值。
我需要的是显示过去7天内这个人是否做了什么。
例如,如果这些人今天只喝一瓶啤酒,它将显示
drink - thur
no - wed
no - tue
no - mon
no - sun
no - sat
no - sat例如,如果这些人没有喝任何东西,它将显示
no - thur
no - wed
no - tue
no - mon
no - sun
no - sat
no - sat例如,如果这些人在过去的7天内喝了任何东西,它将显示
no - thur
drink - wed
no - tue
no - mon
drink - sun
no - sat
no - sat这是SQL代码
+ (void) getInitialDataToDisplay:(NSString *)dbPath {
DrinkTabsAndNavAppDelegate *appDelegate = (DrinkTabsAndNavAppDelegate *)[[UIApplication sharedApplication] delegate];
if (sqlite3_open([dbPath UTF8String], &database) == SQLITE_OK) {
const char *sql = "SELECT DATE(datetime) FROM consumed GROUP BY DATE(datetime) ORDER BY datetime DESC";
sqlite3_stmt *selectstmt;
if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK) {
while(sqlite3_step(selectstmt) == SQLITE_ROW) {
NSString *dateDrunk = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectstmt, 0)];
NSDate *theDate = [NSDate dateFromString:dateDrunk withFormat:@"yyyy-MM-dd"];
DayOfDrinks *drinkDayObj = [[DayOfDrinks alloc] initWithDateConsumed:theDate];
[drinkDayObj hydrateDetailViewData];
//NSLog([NSDate stringFromDate:drinkDayObj.dateConsumed withFormat:@"yyyy-MM-dd"]);
[appDelegate.drinksOnDayArray addObject:drinkDayObj];
[drinkDayObj release];
}
}
}
else
sqlite3_close(database); //Even though the open call failed, close the database connection to release all the memory.
}DrinkHistoryTableViewController.m
if (drunked<7) {
for (int i=drunked; i<7; i++) {
NSString * dayString= [NSString stringWithFormat:@"Nil"];/
[dayArray addObject:dayString];
}
}
for(int i=drunked; i>0; i--)
{
DayOfDrinks *drinksOnDay = [appDelegate.drinksOnDayArray objectAtIndex:i-1];
NSString * dayString= [NSDate stringForDisplayFromDateForChart:drinksOnDay.dateConsumed];
[dayArray addObject:dayString];//X label for graph the day of drink.
drinksOnDay.isDetailViewHydrated = NO;
[drinksOnDay hydrateDetailViewData];
NSNumber *sdNumber = drinksOnDay.standardDrinks; // pass value over to Standard Drink Numbers
//[sdArray addObject: sdNumber];
float floatNum = [sdNumber floatValue]; // convert sdNumber to foat
[sdArray addObject:[NSNumber numberWithFloat:floatNum]];//add float Value to sdArray
}有人能帮我回答我的问题吗?谢谢。
Des
发布于 2011-09-22 14:56:55
使用以下内容更新您的查询,并尝试:
"SELECT DATE(datetime) FROM consumed GROUP BY DATE(datetime) ORDER BY datetime DESC Limit 7"您将获得最近7天的信息。
发布于 2011-09-22 12:44:07
这是目标C吗?啊哈。“sqlite”问题的代码太多:]
当使用报表数据库、数据挖掘等时,拥有一个只包含日期的表并不可笑。你可以有一个只有日期的表,这些日期被添加到每天或任何你连接到的表中,这样你就可以很容易地得到他们当天是否喝了酒的是或否。(这将是一个相当懒惰的解决方案,但可以工作)
另一种选择是查询他们在过去7天内饮酒的天数……这可能是1天或2天。然后在代码中循环通过今天到今天-7 ..。然后通过一个内部循环遍历返回的记录,看看当天是否有匹配的记录。如果有,那么你就知道他们喝了或者没有喝。
嵌套循环可以工作,并且应该在7天内执行得很好。
这些是解决它的大量选择中的两个。然而,我讨厌目标C,今晚没有兴趣写任何东西:]
https://stackoverflow.com/questions/7509241
复制相似问题