从数据库中选择date = today

时间:2013-08-17 09:31:37

标签: ios sql objective-c sqlite nsdateformatter

我在sqlite数据库中有一个表,它有一个日期变量。我已经设置了一个函数,告诉我这段代码中当天的日期:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
self.dateFormatter = [[NSDateFormatter alloc] init];
[self.dateFormatter setDateStyle:NSDateFormatterShortStyle];
[self.dateFormatter setTimeStyle:NSDateFormatterNoStyle];
_todayDate = [self.dateFormatter stringFromDate:[NSDate date]];

然后我创建一个使用日期的SQL语句:

-(void) readRecordsFromDatabaseWithPath:(NSString *)filePath {

    sqlite3 *database;

    if (sqlite3_open([filePath UTF8String], &database) == SQLITE_OK) {
        const char *sqlStateMent = "select * from records where date = ?";
        sqlite3_stmt *compiledStatement;
        NSLog(@"%d", sqlite3_prepare(database, sqlStateMent, -1, &compiledStatement, NULL));
        if (sqlite3_prepare_v2(database, sqlStateMent, -1, &compiledStatement, NULL) == SQLITE_OK) {
            sqlite3_bind_text(compiledStatement, 1, [_todayDate UTF8String], -1, SQLITE_TRANSIENT);
            while (sqlite3_step(compiledStatement) == SQLITE_ROW) {
                NSString *recordid = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 0)];
                NSString *patientid = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 1)];
                NSString *treatmentid = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 2)];
                NSString *date = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 3)];
                NSString *name = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 4)];
                NSString *area = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 5)];
                NSString *level = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 6)];
                NSString *shots = [NSString stringWithUTF8String:(char *)sqlite3_column_text(compiledStatement, 7)];
                Record *newRecord = [[Record alloc] init];
                newRecord.patientid = patientid;
                newRecord.recordid = recordid;
                newRecord.treatmentid = treatmentid;
                newRecord.date = date;
                newRecord.name = name;
                newRecord.area = area;
                newRecord.level = level;
                newRecord.shots = shots;
                LSAppDelegate *delegate = (LSAppDelegate *)[[UIApplication sharedApplication] delegate];
                [delegate.records addObject:newRecord];
            }
        }
        sqlite3_finalize(compiledStatement);
    }
    sqlite3_close(database);
}

然后最后调用函数:

NSString *filePath = [self copyDatabaseToDocuments];
[self readRecordsFromDatabaseWithPath:filePath];
[self.tableView reloadData];

对于大量的代码我很抱歉,虽然我对objective-c很新,通常人们希望看到一些代码。

2 个答案:

答案 0 :(得分:0)

以上代码将为您提供当前日期

NSDate* date = [NSDate date];
    NSDateFormatter* formatter = [[NSDateFormatter alloc] init];
    NSTimeZone *destinationTimeZone = [NSTimeZone systemTimeZone];
    formatter.timeZone = destinationTimeZone;
    [formatter setDateStyle:NSDateFormatterLongStyle];
    [formatter setDateFormat:@"dd/MM/yyyy"];
    NSString* dateString = [formatter stringFromDate:date];

    NSLog(@"tha date is..%@",dateString);

,您的选择查询将是这样的

NSString *queryString = [NSString stringWithFormat:@"select * from records where date ='%@'", dateString];
const char *sqlStateMent = [queryString UTF8String];

答案 1 :(得分:0)

我发现自己如何做,然后检查每个日期是否等于一个字符串,如果是,那么将它添加到数组