еще один, который дает мне горе.
В базе данных SQLite3 выберите запрос I для диапазона дат, указанного в (NSDate *) отDate до (NSDate *) toDate
const char *sql = "SELECT * FROM A, B WHERE A.key = B.key AND A.date between ? and ?";
После открытия БД я запускаю запрос в Objective-C следующим образом:
NSDateFormatter *tmpDatFmt = [[[NSDateFormatter alloc] init] autorelease];
[tmpDatFmt setDateFormat:@"dd-MM-yyyy"];
sqlite3_stmt *stmt;
if(sqlite3_prepare_v2(db, sql, -1, &stmt, NULL) == SQLITE_OK) {
NSLog(@"From %s to %s;", [[tmpDatFmt stringFromDate:fromDate] UTF8String], [[tmpDatFmt stringFromDate:toDate] UTF8String]);
sqlite3_bind_text(stmt, 1, [[tmpDatFmt stringFromDate:fromDate] UTF8String], -1, SQLITE_STATIC); // first '?'
sqlite3_bind_text(stmt, 2, [[tmpDatFmt stringFromDate:toDate] UTF8String], -1, SQLITE_STATIC); // second '?'
while(sqlite3_step(stmt) == SQLITE_ROW) {
NSLog(@"Success");}
В базе данных у меня есть несколько записей, которые соответствуют диапазону дат:
12-04-2010 = in seconds 1271059200
13-04-2010 = in seconds 1271145600
13-04-2010 = in seconds 1271152800
14-04-2010 = in seconds 1271267100
Когда я запускаю его, первый NSLog показывает
From 2010-04-01 to 2010-04-30
Моя проблема в том, что записи не выбраны (в журнале не отображается "Успех"), и я не понимаю, почему.
ранее я просчитал даты через 2 дня как
14-04-2010 = in seconds 1271232000
15-04-2010 = in seconds 1271318400
15-04-2010 = in seconds 1271325600
16-04-2010 = in seconds 1271439936
Эти даты работали нормально (4 х "Успех в журнале". Я озадачен ...