假设我有一个如下所示的表格:
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查询?
答案 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)