mysql查询获取多个日期范围

2024-04-15

我似乎在提出查询来实现我想要的目标时遇到了一些麻烦。我有一张如下表..

| Date(TIMESTAMP)     | Count |
|---------------------|-------|
| 2016-02-01 01:00:00 | 52    |
| 2016-01-05 11:30:00 | 14    |
| 2016-02-01 04:20:00 | 36    |
| ...                 | ...   |

该表大约有 40,000 行。我想做的是获取多个日期范围的总数,所以我最终得到以下结果......

| Period     | Total |
|------------|-------|
| All        | 10245 |
| Past year  | 1401  |
| Past month | 104   |
| Past week  | 26    |

目前,我正在 PHP 脚本中运行一个循环,并对我要查找的每个日期范围进行单独的查询。实际上,我在每个循环中执行大约 10 个查询来获取不同的统计信息,但对于本示例,我对其进行了简化。这需要很长时间,我希望有一种更优雅的方法来做到这一点,但是我现在花了很多时间尝试不同的事情和研究,但一无所获。我了解如何使用 CASE 进行分组,但不了解当一条记录可能需要位于多个容器中时。有什么帮助吗?


尝试这个UNION query:

SELECT 'All', COUNT(*) AS Total FROM yourTable
UNION
SELECT 'Past year', COUNT(*) AS Total
FROM yourTable
WHERE DATE(TIMESTAMP) > DATE_ADD(NOW(), INTERVAL -1 YEAR)
UNION
SELECT 'Past month', COUNT(*) AS Total
FROM yourTable
WHERE DATE(TIMESTAMP) > DATE_ADD(NOW(), INTERVAL -1 MONTH)
UNION
SELECT 'Past week', COUNT(*) AS Total
FROM yourTable
WHERE DATE(TIMESTAMP) > DATE_ADD(NOW(), INTERVAL -1 WEEK)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql查询获取多个日期范围 的相关文章

随机推荐