Как получить количество записей, добавленных с начала текущего месяца
Я строю веб-сервис, используя php & mysql, и хотел бы ограничить количество запросов от каждого apikey до (x) количества в течение (y) времени.
Чтобы добиться этого, я считаю количество записей, добавленных в журнал от каждого apikey в течение периода, используя выражение SQL, как это:
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, пожалуйста. Также, если возможно, самая быстрая реализация в качестве одной из служб предоставляет функции автозаполнения, поэтому таблица журнала довольно велика.
Спасибо
2 ответа
SELECT COUNT(*)
FROM ws_account_log
WHERE
account_log_account_id='1'
AND account_log_timestamp >= SUBDATE(CURDATE(), DAYOFMONTH(CURDATE())-1)
Вычислите временную метку до нужного момента, используя 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;