我需要一些帮助才能从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
}
任何人都可以帮助回答我的问题。
德
答案 0 :(得分:1)
使用此更新您的查询并尝试:
"SELECT DATE(datetime) FROM consumed GROUP BY DATE(datetime) ORDER BY datetime DESC Limit 7"
您将获得最近7天的信息。
答案 1 :(得分:0)
那是目标C吗?育。 “sqlite”问题代码过多:]
使用报表数据库,数据挖掘等时,如果只有一个表可以加入日期,那就不是很荒谬了。您可以拥有一个表格,其中只包含每日添加的日期或您加入的日期,并且很容易让您在当天是否喝酒时获得“是”或“否”。 (这将是一个非常懒惰的解决方案,但会起作用)
另一个选择是查询他们在过去7天内喝的天数......可能是1天或2天。然后在今天的代码循环到今天 - 7 ...然后是一个内循环来循环返回的记录,看看那天是否匹配。如果有,那么你知道他们喝酒或者不喝酒。
嵌套循环可以工作,并且应该在7天内完成它。
这些是解决它的众多选择中的两个。然而,我厌恶目标C并且有兴趣在今晚写作:]