この記事では、MySQL の時間別統計データの取得方法 (コード例) を紹介します。必要な方は参考にしていただければ幸いです。あなたを助けます。
データベース統計を行う場合、多くの場合、年、月、日に基づいてデータをカウントし、echarts
を使用して視覚化効果を作成する必要があります。
データベース: MySQL (推奨チュートリアル: MySQL チュートリアル)
思考
時間ディメンションに従って統計を作成するための前提条件は、データベースに保持時間情報が必要であることです。MySQL に付属の
datetime タイプを使用することをお勧めします。
時間を記録します。
`timestamp` datetime DEFAULT NULL,
MySQL で時刻と日付を処理する主な関数は DATE_FORMAT(date,format)
です。使用可能なパラメータは次のとおりです。
Format | Description |
---|---|
%a | 週の短縮名 |
%b | 月の短縮名 |
%c | 月、値 |
英語の接頭辞が付いた月の日付 | |
月の日、数値 (00-31) | |
月の日、数値 (0-31) | ##%f |
%H | |
%h | |
%I | |
%i | |
%j | |
%k | |
%l | |
%M | |
%m | |
%p | |
%r | |
%S | |
%s | |
%T | |
#%U | |
%u | |
%V | |
with %X | %v |
## を使用します#%W | 週名 |
%w | 曜日 (0=日曜日、6=土曜日) |
% 年は週の最初の日の 4 桁で、%v は | |
年、4 桁 | を使用します。 |
年、2 桁 | |
注 | : 毎日の統計については、 、 | %j
を使用すると、異なる月/週の同じ値が一緒にカウントされます。 |
sysdate() を通じて取得できます。
SELECT SYSDATE() FROM DUAL; SELECT NOW() FROM DUAL;
実際のニーズに応じてクエリを実行するには、結論
CREATE TABLE `apilog` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(64) DEFAULT NULL, `action` varchar(64) DEFAULT NULL, `params` text, `result` text, `timestamp` datetime DEFAULT NULL, PRIMARY KEY (`id`) )
action
# 当日 SELECT action, COUNT(id) count FROM apilog WHERE DATE_FORMAT(`timestamp`,'%j') = DATE_FORMAT(now(),'%j') ORDER BY count desc; # 当周 SELECT action, COUNT(id) count FROM apilog WHERE DATE_FORMAT(`timestamp`,'%u') = DATE_FORMAT(now(),'%u') ORDER BY count desc; # 当月 SELECT action, COUNT(id) count FROM apilog WHERE DATE_FORMAT(`timestamp`,'%m') = DATE_FORMAT(now(),'%m') ORDER BY count desc; # 当年 SELECT action, COUNT(id) count FROM apilog WHERE DATE_FORMAT(`timestamp`,'%Y') = DATE_FORMAT(now(),'%Y') ORDER BY count desc;
# 按日 SELECT action, DATE_FORMAT(`timestamp`,'%j'), COUNT(id) count FROM apilog WHERE action = 'xxx' GROUP BY DATE_FORMAT(`timestamp`,'%j') # 按周 SELECT action, DATE_FORMAT(`timestamp`,'%u'), COUNT(id) count FROM apilog WHERE action = 'xxx' GROUP BY DATE_FORMAT(`timestamp`,'%u') # 按月 SELECT action, DATE_FORMAT(`timestamp`,'%m'), COUNT(id) count FROM apilog WHERE action = 'xxx' GROUP BY DATE_FORMAT(`timestamp`,'%m') # 按年 SELECT action, DATE_FORMAT(`timestamp`,'%Y'), COUNT(id) count FROM apilog WHERE action = 'xxx' GROUP BY DATE_FORMAT(`timestamp`,'%Y')
# 按日 SELECT action, DATE_FORMAT(`timestamp`,'%j'), COUNT(id) count FROM apilog GROUP BY action, DATE_FORMAT(`timestamp`,'%j') # 按周 SELECT action, DATE_FORMAT(`timestamp`,'%u'), COUNT(id) count FROM apilog GROUP BY action, DATE_FORMAT(`timestamp`,'%u') # 按月 SELECT action, DATE_FORMAT(`timestamp`,'%m'), COUNT(id) count FROM apilog GROUP BY action, DATE_FORMAT(`timestamp`,'%m') # 按年 SELECT action, DATE_FORMAT(`timestamp`,'%Y'), COUNT(id) count FROM apilog GROUP BY action, DATE_FORMAT(`timestamp`,'%Y')
上記は、より一般的に使用される時間統計です。その他の時間ディメンションについては、同様の処理に関する上記のパラメータ表を参照してください。 。
以上がMySQLの時間別統計手法の紹介(コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。