Как я могу получить данные за эту неделю? - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь закодировать метод, который будет возвращать сумму всех затрат в моей таблице «Стоимость», но на этой текущей неделе (принимая понедельник за 1-й день недели)

Так выглядит моя БД:

enter image description here

И это данные, которые у меня есть внутри

enter image description here

У меня есть что-то вроде этого:

- (float)getthisweekscosts {
    float sumprice = 0; // We initialize the total price for all the rows

    NSString *getcurrentcost = [NSString stringWithFormat:@"%@", @"SELECT COSTAMOUNT FROM COST WHERE DATE > DATE('now', 'weekday 0', '-7 days')"];
    const char *query_stmt_budget = [getcurrentcost UTF8String];

    if (sqlite3_prepare_v2(costDB,query_stmt_budget, -1, &statement, NULL) == SQLITE_OK){
        while (sqlite3_step(statement) == SQLITE_ROW){
            NSString *currentcost = [NSString stringWithFormat:@"%s",(const char *) sqlite3_column_text(statement, 0)];
            sumprice += [currentcost floatValue];
        }
        sqlite3_finalize(statement);
    }

    sqlite3_close(costDB);

    return sumprice;
}

Источник: Получите данные этой недели, используя SQLite

Но я не уверен, почему он возвращает 0 в моем случае.

1 Ответ

0 голосов
/ 19 мая 2018

проверить тип столбца COSTDATE DATE '?

если это правда, вам не нужно DATE(COSTDATE)

использовать COSTDATE


ваши данные иsql прав

это тестовая демонстрация

CREATE TABLE COST(
    COSTAMOUNT  REAL,
    COSTDATE DATE
);

INSERT INTO COST VALUES (2.48,'2018/05/19');
INSERT INTO COST VALUES (2.85,'2018/05/19');
INSERT INTO COST VALUES (null,null);


SELECT sum(COSTAMOUNT) --result 5.33
FROM COST 
WHERE COSTDATE > DATE('now', 'weekday 0', '-7 days') 

SQL Fiddle


отладка и проверка вашего кода

if (sqlite3_prepare_v2(costDB,query_stmt_budget, -1, &statement, NULL) == SQLITE_OK){

while (sqlite3_step(statement) == SQLITE_ROW){

    NSString *currentcost = [NSString stringWithFormat:@"%s",(const char *) sqlite3_column_text(statement, 0)];
    sumprice += [currentcost floatValue];
}
sqlite3_finalize(statement);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...