Mysql 使用现在和上周之间的日期进行查询

Mysql query using dates between now and last week

所以我试图从数据库中获取今天和 7 天前的结果,但我所做的似乎是错误的,因为我不断收到致命错误

Uncaught exception 'mysqli_sql_exception' with message 'You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DAYS GROUP BY logins.unique_id ORDER BY' Stack trace: #0 mysqli->query('SELECT SUM(DIST...', 1) #1 {main} thrown

  <?php //get info for scores in the league
             if ($result = $link->query("SELECT SUM(DISTINCT step_count.steps) as total,  logins.nickname, MAX(step_count.steps) as maxsteps, ROUND(AVG (DISTINCT step_count.steps)) as average, logins.Email as email
                FROM step_count
                INNER JOIN logins on
                  step_count.unique_id=logins.unique_id
              WHERE logins.unique_id='$unique_id' AND step_count.date BETWEEN CURDATE() AND CURDATE() + INTERVAL 7 DAYS
                GROUP BY logins.unique_id
                ORDER BY `total` DESC
              ", MYSQLI_USE_RESULT))

              while($row = $result->fetch_assoc()){ ?>

更新专栏后,我仍然收到同样的致命错误

这里有语法问题,您在 BETWEEN

之前缺少一列
logins.unique_id='$unique_id' BETWEEN CURDATE() AND CURDATE() + INTERVAL 7 DAYS

BETWEEN 的正确语法是

<column_name> BETWEEN <value1> AND <value2>

所以,应该是

logins.unique_id='$unique_id' AND <date_column> BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 7 DAY) 

并且,使用 DATE_ADD 来添加特定的天数。

此外,要接收今天和 7 天前的数据,您需要使用 DATE_SUB,因此查询的最后一部分将是:

step_count.date BETWEEN DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE()

你的 GROUP BY 应该是:

GROUP BY logins.nickname, email