0

假设我有一个如下所示的表:

id | name  | date
1  | test1 | 2013-05-12 00:00:01
2  | test2 | 2013-05-13 00:00:01
3  | test3 | 2013-05-14 00:00:01
4  | test4 | 2013-05-15 00:00:01
5  | test5 | 2013-05-15 00:00:02

我想要做的一个例子是回顾过去 3 天的记录,然后我想计算每个人说的记录有多少。

因此,对于 15 日,它将返回 2、14 日 1 等。

我知道我可以执行以下操作来计算两个日期之间的计数(这将是 15 日):

SELECT COUNT(id) as recordCount FROM exampletable WHERE date >= STR_TO_DATE('130515', '%y%m%d') - INTERVAL 1 DAY AND date < STR_TO_DATE('130515', '%y%m%d')

但是我不确定我会怎么做,所以我可以在过去 3 天里得到一个数组。

我知道如何在 PHP 中做到这一点,有一个 for 循环,然后STR_TO_DATE每次更改第一个参数,但我很好奇,有没有办法只使用 SQL 查询来做到这一点?

4

2 回答 2

1

更新

SELECT COUNT(*) recordCount 
  FROM exampletable 
 WHERE DATE(`date`) BETWEEN CURDATE() - INTERVAL 3 DAY AND CURDATE()
 GROUP BY DATE(`date`)

注意此查询不会使用任何索引date

于 2013-05-15T20:46:45.780 回答
0
SELECT COUNT(*) AS 'recordCount' FROM dbo.Table_1 
WHERE dt > DATEADD(dd,-3,GETDATE())
GROUP BY DATEPART(dd,dt)
于 2013-05-15T20:55:16.470 回答