MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLで現在の日付に登録したユーザー数を取得する方法

はじめに

MySQLで「現在の日付に登録されたユーザーの数」を取得したい場合は、COUNT()関数とGROUP BY MONTH()を組み合わせます。現在の日付との比較には、CURRENT_DATE()(またはCURDATE())を使用します。

現在の日付を確認する

まず、現在の日付を確認しておきましょう。CURDATE()関数を使うと、今日の日付を簡単に取得できます。

mysql> select curdate() ;
+------------+
| curdate()  |
+------------+
| 2019-11-30 |
+------------+
1 row in set (0.00 sec)

この例では、現在の日付が「2019-11-30」と表示されています。

サンプルテーブルの作成

動作確認用に、名前と登録日時を格納するテーブルを作成します。

mysql> create table DemoTable1819
     (
     Name varchar(20),
     RegisteringDate datetime
     );
Query OK, 0 rows affected (0.00 sec)

Name(名前)とRegisteringDate(登録日時)の2つのカラムを持つシンプルな構成です。

テストデータの挿入

INSERTコマンドで、いくつかのレコードを追加していきます。

mysql> insert into DemoTable1819 values('Chris','2019-11-29 12:30:34');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1819 values('David','2019-11-30 12:30:34');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1819 values('Mike','2019-12-30 12:30:34');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1819 values('Sam','2018-11-30 11:00:00');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1819 values('Carol','2019-11-30 10:00:00');
Query OK, 1 row affected (0.00 sec)

登録データの確認

SELECT文で、テーブル内の全レコードを表示してみましょう。

mysql> select * from DemoTable1819;

実行結果は以下の通りです。

+-------+---------------------+
| Name  | RegisteringDate     |
+-------+---------------------+
| Chris | 2019-11-29 12:30:34 |
| David | 2019-11-30 12:30:34 |
| Mike  | 2019-12-30 12:30:34 |
| Sam   | 2018-11-30 11:00:00 |
| Carol | 2019-11-30 10:00:00 |
+-------+---------------------+
5 rows in set (0.00 sec)

現在の日付に登録した人数を取得するクエリ

それでは本題です。当日に登録したユーザーの件数を取得するには、次のようなクエリを実行します。

mysql> select count(RegisteringDate) as Output from DemoTable1819 WHERE DATE(RegisteringDate) = CURDATE() GROUP BY MONTH(RegisteringDate);

実行結果:

+--------+
| Output |
+--------+
|      2 |
+--------+
1 row in set (0.00 sec)

クエリのポイント解説

  • DATE(RegisteringDate) = CURDATE()DATE()関数でdatetime型から日付部分だけを抽出し、現在の日付と比較しています。時刻の影響を受けずに正確に判定できるのがポイントです。
  • COUNT(RegisteringDate):条件に一致したレコードの件数をカウントします。
  • GROUP BY MONTH(RegisteringDate):月単位でグループ化することで、月ごとの集計にも対応できます。

この結果から、「2019-11-30」に登録したのはDavidとCarolの2人であることがわかります。

まとめ

MySQLで当日の登録者数を取得するには、COUNT()DATE()CURDATE()を組み合わせるのが最も手軽な方法です。管理画面のダッシュボードや日次レポートなど、毎日の登録状況を把握したい場面でぜひ活用してみてください。

  1. MySQLのフィールドに現在の日付を設定する方法(UNIX_TIMESTAMP(now)の使い方)

    MySQLでは、unix_timestamp()関数を使うことで、現在の日時をUNIXタイムスタンプとして取得し、テーブルのフィールドに簡単に設定できます。この記事では、実際にテーブルを作成し、現在の日付(UNIXタイムスタンプ)をフィールドに設定する手順を解説します。UNIXタイムスタンプとはUNIXタイムスタンプとは、1970年1月1日00:00:00 UTCからの経過秒数を表す数値です。日時を整数として扱えるため、比較や計算が容易になり、データベースでの時間管理によく利用されます。サンプルテーブルの作成まず、以下のようにCREATE TABLE文でテーブルを作成します。mysql>

  2. MySQLでテーブルの日付レコードを変更する方法|UPDATEとDATE_ADD()の使い方

    MySQLで保存済みの日付データに年数を加算して変更したい場合、UPDATEコマンドとDATE_ADD()関数を組み合わせることで簡単に実現できます。ここでは、実際のSQLクエリ例を使いながら、日付レコードを変更する手順を順番に解説します。1. テーブルを作成するまず、日付型(date)のカラムを持つテーブルを作成します。mysql> create table DemoTable1984 ( ShippingDate date ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERTコマンドを使ってテ