无法筛选过去 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 语句有关。