在两个日期之间获取记录一段时间

时间:2013-05-15 20:42:06

标签: php mysql sql pdo

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

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,14th 1等。

我知道我可以执行以下操作来获取2个日期之间的计数(这将是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查询?

2 个答案:

答案 0 :(得分:1)

已更新

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

注意此查询不会使用date

上的任何索引

答案 1 :(得分:0)

SELECT COUNT(*) AS 'recordCount' FROM dbo.Table_1 
WHERE dt > DATEADD(dd,-3,GETDATE())
GROUP BY DATEPART(dd,dt)