【问题标题】:MySQL count rows in multiple date ranges?MySQL计算多个日期范围内的行数?
【发布时间】:2012-06-25 21:18:06
【问题描述】:

我想计算给定表格中几个日期范围内的行数(即:上一小时、今天、本周、过去 30 天)。

我需要知道此时间/日期期间有多少条目,才能判断给定用户是否已达到此范围中每个范围的限制。例如,一个用户一个月最多可以有 300 个条目,但有(每小时/每天/每周/每月)的限制。

到目前为止,我正在尝试使用与此类似的SELECT CASE 的子查询方法:group by range in mysql

这应该是最好的方法?

【问题讨论】:

  • 您目前如何存储这些信息?它在日期时间字段中吗?您应该能够使用日期时间函数和分组来选择相关部分。为你所拥有的和你想要的结果提供结构会有很大帮助。
  • 是的,使用日期时间存储

标签: mysql date count range


【解决方案1】:

在 mysql 中,您可以使用一系列带有 if 语句的计数函数,以便只计算所需的日期,就像这样。

SELECT COUNT(IF(date >= DATE_SUB(NOW(), INTERVAL 1 HOUR), 1, null)) AS hourHits, 

等等

根据 cmets 编辑

【讨论】:

  • 您需要使用NULL 作为错误条件,因为COUNT() 仍会将0 计入其计算中,否则,请使用SUM()。另外,我认为应该将< 切换为>,否则它将计算一小时内不是的所有点击。
  • Zane 是对的,这是实际的 COUNT:COUNT(IF(date >= DATE_SUB(NOW(), INTERVAL 1 HOUR), 1, NULL) ) AS hourHits,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-26
  • 2019-12-04
  • 2011-02-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多