无法筛选过去 30 天的 SQL 数据
Unable to filter SQL data from last 30 days
我想收集 SQL 最近 30 天的数据。
此代码显示所有时间的数据
$result = $dbh->query('SELECT country,COUNT(*) FROM data_able GROUP BY country');
这没有显示任何内容,而是显示最近 30 天的数据。
$result = $dbh->query('SELECT country,COUNT(*) FROM data_able GROUP BY country WHERE dtime > DATE_SUB(CURDATE(), INTERVAL 30 DAY)');
所有 SQL 条目都是在过去 30 天内完成的。
也试过
$result = $dbh->query('SELECT country,COUNT(*) FROM data_able WHERE dtime > DATE_SUB(CURDATE(), INTERVAL 30 DAY) GROUP BY country');
我在这里做错了什么?
试试这个:
SELECT country, COUNT(*)
FROM data_able
WHERE dtime > DATE_ADD(CURDATE(), INTERVAL -30 DAY)
GROUP BY country
第二个不起作用,因为您将 GROUP BY
放在 WHERE
语句之前,这是不正确的 SQL 顺序。
至于为什么第三个代码不起作用,我不确定,但如果我不得不猜测,它与 DATE_SUB
语句有关。
我想收集 SQL 最近 30 天的数据。 此代码显示所有时间的数据
$result = $dbh->query('SELECT country,COUNT(*) FROM data_able GROUP BY country');
这没有显示任何内容,而是显示最近 30 天的数据。
$result = $dbh->query('SELECT country,COUNT(*) FROM data_able GROUP BY country WHERE dtime > DATE_SUB(CURDATE(), INTERVAL 30 DAY)');
所有 SQL 条目都是在过去 30 天内完成的。 也试过
$result = $dbh->query('SELECT country,COUNT(*) FROM data_able WHERE dtime > DATE_SUB(CURDATE(), INTERVAL 30 DAY) GROUP BY country');
我在这里做错了什么?
试试这个:
SELECT country, COUNT(*)
FROM data_able
WHERE dtime > DATE_ADD(CURDATE(), INTERVAL -30 DAY)
GROUP BY country
第二个不起作用,因为您将 GROUP BY
放在 WHERE
语句之前,这是不正确的 SQL 顺序。
至于为什么第三个代码不起作用,我不确定,但如果我不得不猜测,它与 DATE_SUB
语句有关。