Как мне получить данные за эту неделю?

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

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

Как мне получить данные за эту неделю?

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

Как мне получить данные за эту неделю?

У меня примерно так:

- (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.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
78
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

проверьте тип столбца 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);
}

Я загрузил картинку, как выглядит моя БД. COSTDATE хорошо определен, и я использовал только COSDATE вместо DATE(COSTDATE). Не повезло :(

user8914795 19.05.2018 19:29

Я сделал ! Сейчас он у меня такой: WHERE DATE > DATE('now', 'weekday 0', '-7 days'), но все равно 0.

user8914795 19.05.2018 19:33

ВЫБЕРИТЕ сумму (COSTAMOUNT) FROM COST WHERE COSTDATE> DATE ('now', 'weekday 0', '-7 days') попробуйте, если все еще 0, покажите свои данные

ITWeiHan 19.05.2018 19:35

ВЫБЕРИТЕ COSTAMOUNT, COSTDATE FROM T заказ по COSTDATE desc, используйте этот скрипт, чтобы показать ваши 10 лучших данных

ITWeiHan 19.05.2018 19:39

Я загрузил картинку с имеющимися у меня данными. Это всего лишь несколько записей

user8914795 19.05.2018 19:44

Приятно, что вы создали скрипт SQL. Если я добавлю эту строку INSERT INTO COST VALUES (1.00,'2018/04/12'); (это на прошлой неделе), результат будет 6,33 :(. Я действительно не знаю, что может быть не так.

user8914795 19.05.2018 20:09

sql прав, попробуйте отладить, запустите свой код, проверьте логику кода

ITWeiHan 19.05.2018 20:12

проверьте свою db sysdate, выберите DATE ('now', 'weekday 0', '-7 days'), DATE ('now', 'weekday 0', '-0 days');

ITWeiHan 19.05.2018 20:43

Я получаю «2018-05-13» для первого и «2018-05-20» для второго

user8914795 19.05.2018 20:49

Кажется, что sql прав, вы отлаживаете свой код?

ITWeiHan 19.05.2018 20:55

Да, у меня действительно есть :(. Когда я запускаю SELECT sum(COSTAMOUNT) FROM COST, он получает все строки. Это нормально. Но когда я добавляю WHERE COSTDATE > DATE('now', 'weekday 0', '-7 days'), я получаю 0 строк. Так что я уверен на 100%, что проблема в этом :(

user8914795 19.05.2018 21:51

Другие вопросы по теме