Каким образом можно вывести статистику для сегодняшнего дня, вчерашнего дня, недели и месяца? Мой друг ранее показал мне способ вывода для сегодняшнего дня, но я испытываю трудности с пониманием того, как вывести для других периодов. Вот пример кода, который используется для сегодняшнего дня: <pre><code>$today = mysql_result(mysql_query(" SELECT count(*) FROM statistics_couter_visit WHERE date >= ".(mktime(0, 0, 0, date('m'), date('d'), date('Y'))) ) ,0);</code></pre> Как можно адаптировать его для вывода статистики за другие периоды времени? Спасибо!
Для вывода статистики для вчерашнего дня, недели и месяца вы можете использовать следующие запросы: 1. Для вчерашнего дня: ```php $yesterday = mysql_result(mysql_query(" SELECT count(*) FROM statistics_couter_visit WHERE date >= ".(mktime(0, 0, 0, date('m'), date('d')-1, date('Y'))) . " AND date < ".(mktime(0, 0, 0, date('m'), date('d'), date('Y'))) ), 0); ``` 2. Для недели: ```php $week = mysql_result(mysql_query(" SELECT count(*) FROM statistics_couter_visit WHERE date >= ".(mktime(0, 0, 0, date('m'), date('d')-7, date('Y'))) ), 0); ``` 3. Для месяца: ```php $month = mysql_result(mysql_query(" SELECT count(*) FROM statistics_couter_visit WHERE MONTH(date) = MONTH(CURDATE()) AND YEAR(date) = YEAR(CURDATE()) ), 0); ``` Эти запросы будут выводить статистику для вчерашнего дня, недели и текущего месяца соответственно. Вы можете адаптировать их по своему усмотрению, добавляя или изменяя условия в запросах для получения нужной вам статистики. Не забудьте также обновить свой код на использование безопасных методов доступа к базе данных, таких как PDO или MySQLi.
Несколько Count + умение обращаться с временнЫми функциями, и у вас получится универсальный запрос со статистикой:
select count(case when scv.date >= CURDATE() then 1 end) today_count, count(case when scv.date >= DATE_SUB(CURDATE(), INTERVAL 1 DAY) and scv.date < CURDATE() then 1 end) yesterday_count, count(case when scv.date >= DATE_SUB(CURDATE(), INTERVAL 1 WEEK) then 1 end) week_count, count(case when scv.date >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH) then 1 end) month_count from statistics_couter_visit as scv where scv.date >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH) -- тут ограничение по макс. окну просмотра статистики, то есть по month_count
PS: Естественно, по полю scv.date должен быть создан индекс.
Что это за статистика?
Если имеется ввиду статистика использования БД, то есть специальная схемаperformance_schema
- пиши к ней запросы.
Но скорее всего, ты имеешь ввиду статистику своего сайта/приложения/API (в общем прикладного использования).
Это уже более сложная тема, т.к. необходимо:
- Спроектировать механизм сбора статистики - API/эндпоинты/функциии
- Спроектировать БД для ее хранения - таблицы/схемы + запросы
Также не забывай, что статистики накапливается очень много и тебе потребуются оптимизации разные. Тут тоже не очень просто:
- Для хранения статистики - разные БД (скорее всего у тебя реляционная, но для статистики лучше использовать nosql БД, например, временных рядов)
- Необходимо знать особенности этой БД, т.к. нагрузки возможно будут высокими
- Принять во внимание то, что место может просто закончиться и другие неожиданные ситуации
Просто так на твой вопрос не ответить, т.к. под каждую ситуацию свое решение