4

我正在使用 php 和 mysql 构建 Web 服务,并希望在 (y) 时间内将来自每个 apikey 的请求限制为 (x) 数量。

为了实现这一点,我使用如下 sql 语句计算在一段时间内从每个 apikey 添加到日志的记录:

SELECT COUNT(*) FROM ws_account_log WHERE account_log_account_id='1' AND account_log_timestamp > DATE_SUB(now(), INTERVAL 1 HOUR)

这给了我一个滚动的每小时计数,这很好,但我想要一个每月计数的硬性限制。例如,自当月第一天的 00:00 起添加了多少行。

我已经看到使用存储过程和不同语法的示例,我想要一个适用于 MYSQL 的答案。此外,如果可能,作为服务之一的最快实现提供自动完成功能,因此日志表相当大。

谢谢

4

2 回答 2

5
SELECT COUNT(*)
FROM ws_account_log
WHERE
      account_log_account_id='1'
  AND account_log_timestamp >= SUBDATE(CURDATE(), DAYOFMONTH(CURDATE())-1)
于 2012-04-29T10:49:05.283 回答
0

使用 php 计算您想要的时刻的时间戳,然后将其传递给 mysql 查询。

$date = mktime(0, 0, 0, date("n"), 1, date("Y"));
$mysqldate = date( 'Y-m-d H:i:s', $date );
$query = " ... AND account_log_timestamp > ".$mysqldate;
于 2012-04-29T10:44:50.357 回答