【问题标题】:How do I get this week's data?如何获取本周的数据?
【发布时间】:2018-10-29 20:40:42
【问题描述】:

我正在尝试编写一种方法,该方法将返回我的“成本”表中所有成本的总和,但在本周(以星期一为第一天)

这就是我的数据库的样子:

这是我里面的数据

我有这样的事情:

- (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;
}

来源:Get this week's data using SQLite

但我不确定为什么它在我的情况下返回 0。

【问题讨论】:

    标签: sql objective-c sqlite date datetime


    【解决方案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)。没有运气:(
    • 我做到了!现在我有这样的:WHERE DATE > DATE('now', 'weekday 0', '-7 days') 但我仍然得到 0。
    • SELECT sum(COSTAMOUNT) FROM COST WHERE COSTDATE > DATE('now', 'weekday 0', '-7 days') 试试看,如果还是0,请出示你的数据
    • SELECT COSTAMOUNT,COSTDATE FROM T order by COSTDATE desc ,使用此脚本显示您的前 10 个数据
    • 我上传了一张带有我所拥有数据的图片。它们只是几条记录
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 2020-07-14
    相关资源
    最近更新 更多