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
所以我试图从数据库中获取今天和 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